我的代碼當前正常工作正常執行SPNEGO(Kerberos)身份驗證爲我的網站的用戶。我有一個特殊的緩存機制來加速基於確認用戶身份的決定。對於普通的密碼認證來說,這很簡單 - 將「當前」用戶名+密碼組合與「舊」密碼組合比較 - 如果沒有變化,決策仍然可以被緩存。否則,他們需要重新評估。Java GSSAPI:比較兩個GSSCredential實例
我正在嘗試爲Kerberos做同樣的事情。我主要工作,但我很困惑爲什麼GSSCredential.equals()
不會工作。特別是,在對每個請求進行身份驗證後,我獲得的GSSCredential實例是「相同的」,因爲它們是針對相同的用戶,相同的服務,甚至是在相同情況下(我認爲)獲得的。如果我做了一個toString()
,我比較它們的輸出是一樣的(是的,我知道這是無關的,但它仍然是一個很好的跡象表明它們應該是相等的)。
但是,GSSCredential_1.equals(GSSCredential_2)
總是在請求之間返回false。這可能是因爲每個票據都是使用不同的SPNEGO票據獲得的(爲了避免重放場景,這是必要的,但是這些票據仍然屬於同一個委託人,並「針對」相同的服務主體。
在代碼決定我需要這樣的最佳闡述:
做這些新憑證代表相同的安全主體如先前使用的呢?過期問題,有效性問題以及未分別評估的問題,以及以後的問題。
比較他們的名字「作品」,但我希望有一些更強大的東西。
任何想法?
我不認爲你會比比較名稱更好。你有沒有可能會失敗的場景? – 2012-04-23 18:14:52