2013-04-20 97 views
1

我編寫了一個簡單的Java應用程序,它使用GSSAPI連接到Active Directory(Kerberos SSO)。JAVA和GSSAPI:清除緩存

我有2個領域和KDC:x和y。

如果我將使用realm/KDC x運行該工具 - 該工具將起作用。

如果我將運行帶有領域/ KDC的工具y - 該工具也可以工作。

如果我將運行該工具以使用realm/KDC x(登錄,註銷,登錄,註銷)執行2個身份驗證 - Works。

相同的結果爲領域/ KDC y。

問題是,當我試圖在兩個領域/的KDC之間切換:登錄X,註銷X,登錄Y,註銷ÿ - 試圖登錄到第二個時,將引發異常:

GSSException,並:機制水平:消息流修改(41))

只是爲了澄清 - 只有當我使用2個不同的領域/的KDC(一個每次出現該問題,當然),而無需重新啓動它們之間的整個應用程序二。

我認爲java/gssapi以某種方式緩存了領域或krb票據或其他內容。

問題是如何清除這個緩存(不殺死整個應用程序),或者如果沒有這樣的緩存/靜態變量,我該如何使它工作?

謝謝!

回答