2017-01-30 178 views
1

我正在嘗試使用spnego和tomcat設置kerberos iwa身份驗證。SPNEGO Kerberos窗口身份驗證

這是我第一次這樣做,並沒有看到真正的環境,所以依靠在線文檔主要是spnego網站。 我得到以下錯誤:

GSSException: Failure unspecified at GSS-API level (Mechanism level: Invalid Argument (400) Cannot find key of appropriate type to decrypt AP REP - RC4 with HMAC)

Catalina log shows: 
Jan 30, 2017 10:12:37 AM net.sourceforge.spnego.SpnegoHttpFilter doFilter 
SEVERE: HTTP Authorization Header=Negotiate <edited - actual had a big key> 
Jan 30, 2017 10:41:24 AM org.apache.coyote.AbstractProtocol pause 
INFO: Pausing ProtocolHandler ["http-bio-8443"] 
Jan 30, 2017 10:41:24 AM org.apache.coyote.AbstractProtocol pause 

附上我的KRB5和login.conf的。

krb5.conf login.conf

KLIST command gives 2 keys: 
CLIENT: B1GYZDM @ test.win.org 
Server: krbtgt/test.win.org @ test.win.org 
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT) 

CLIENT: B1GYZDM @ test.win.org 
Server: krbtgt/test.win.org @ test.win.org 
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 

啓動Tomcat作爲本地服務。 和keytab支持128加密。

你能幫我解決這個問題嗎?

KRB5.conf: 
[libdefaults] 
default_tkt_enctypes = aes128-cts aes256-cts 
default_tgs_enctypes = aes128-cts aes256-cts 
permitted_enctypes = aes128-cts aes256-cts 

[realms] 
test.win.org = { 
    kdc = test.win.org 
    default_domain = test.win.org 
} 

[domain_realm] 
test.win.org = test.win.org 


login.conf: 
spnego-client { 
com.sun.security.auth.module.Krb5LoginModule required; 
}; 

spnego-server { 
com.sun.security.auth.module.Krb5LoginModule required 
storeKey=true 
useKeyTab=true 
keyTab="file:///E:/Apps/apache-tomcat-7.0.40/bin/test.keytab" 
isInitiator=false; 
}; 

custom-client { 
com.sun.security.auth.module.Krb5LoginModule required 
storeKey=true 
useKeyTab=true 
keyTab="file:///E:/Apps/apache-tomcat-7.0.40/bin/test.keytab" 
principal=B1ADPST000; 
}; 
+1

請將krb5.conf和login.conf的內容直接粘貼到問題本身中。不要讓我們去另一個網站下載它們。這些文件足夠短,你可以做到這一點。那麼,無論如何,對於login.conf,肯定是krb5.conf,如果它不比krb5.conf長,你可以顯示相關的SPNEGO節或整個事情。 –

+0

我已經使用文件內容更新了票證 – michael

+0

您是否使用Microsoft Active Directory來使用Kerberos?你是否還有一個keytab創建語法的副本,你創建了keytab,如果有的話,你是否也可以發佈? –

回答

0

我想,當你訪問web應用程序,你得到的錯誤..

最有可能的密鑰表文件沒有匹配的密鑰條目。

創建keytab文件時,應該使用'/ crypto all'。

您可以在客戶端運行'klist',而不是服務器端,並檢查客戶端從服務器(部署WebApp的主機)的KDC獲得的服務票證,而不是'票證授予票證(TGT)'

+0

根據管理員'crypto al'無法使用,因爲它是org中的一個重大安全漏洞。 klish命令在客戶端運行,並提交了2張票,我把它們放在這個問題中。 – michael

+0

我會對'安全漏洞'非常感興趣....'klist'輸出已經顯示TGT的'RSADSI RC4-HMAC(NT)',那麼這有什麼問題?如果不使用不安全的密碼,AD管理員應相應地配置AD。 「klist」輸出不顯示服務票證,只有票證授予票據,因此瀏覽器無法將其發送到您的服務/應用程序。 –

+0

遺憾我沒有多加一個票也由klist的表示: 客戶:B1GYZDM @ test.win.org 服務器:HTTP/br1twvfsg005.test.win.org @ test.win.org KerbTicket加密類型:RC4 RSADSI -HMAC(NT) – michael