2013-11-27 57 views
2

我設置Tomcat以使用SPNEGO身份驗證,因此用戶無需輸入密碼即可單點登錄到我們的Web應用程序,並且一切正常。 昨天我更改了服務帳戶的密碼,並重新創建了keytab文件,但在Tomcat重新啓動後,SSO停止了工作。 在日誌中我發現:密碼更改後的Kerberos/Spnego身份驗證問題

exception [GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed)] with root cause 
java.security.GeneralSecurityException: Checksum failed 
     at sun.security.krb5.internal.crypto.dk.ArcFourCrypto.decrypt(ArcFourCrypto.java:388) 
     at sun.security.krb5.internal.crypto.ArcFourHmac.decrypt(ArcFourHmac.java:74) 
     at sun.security.krb5.internal.crypto.ArcFourHmacEType.decrypt(ArcFourHmacEType.java:83) 
     at sun.security.krb5.internal.crypto.ArcFourHmacEType.decrypt(ArcFourHmacEType.java:77) 
     at sun.security.krb5.EncryptedData.decrypt(EncryptedData.java:168) 
     at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:267) 
     at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:134) 
     at sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:79) 
     at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:724) 
     at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:323) 
     at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:267) 
     at sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:874) 
     at sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:541) 
     at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:323) 
     at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:267) 
     at net.sourceforge.spnego.SpnegoAuthenticator.doSpnegoAuth(SpnegoAuthenticator.java:444) 
     at net.sourceforge.spnego.SpnegoAuthenticator.authenticate(SpnegoAuthenticator.java:283) 

由於配置應該好吧,我不知道爲什麼我得到這個錯誤...可能是一些相關的票據發放票據,這不是刷新?

回答

1

其中一種可能性是那些使用舊密碼簽發了優秀服務票的人。如果您重新生成了密鑰表,但未在密鑰表中保留舊密鑰,那麼您會希望任何沒有註銷並登錄的用戶刷新其票據並獲得服務的服務票據以生成該錯誤。如果它在客戶端獲得全新的TGT(例如通過完全在Windows外登錄並重新登錄)就可以工作,那就是發生了什麼事情。如果這不起作用,請編輯您的問題以添加詳細信息,我會在其他答案中探索其他人的失敗。