JAVA& GSSAPI:清除缓存

时间:2013-04-20 11:42:46

标签: java security active-directory kerberos gssapi

我写了一个简单的java应用程序,它使用GSSAPI连接到Active Directory(Kerberos SSO)。

我有2个领域和KDC:x和y。

如果我将使用realm / KDC x运行该工具 - 该工具将起作用。

如果我将使用realm / KDC运行该工具y - 该工具也可以工作。

如果我将运行该工具以使用realm / KDC x执行2次身份验证(登录,注销,登录,注销) - Works。

realm / KDC y的结果相同。

问题是当我尝试在两个领域/ KDC之间切换时:登录x,登出x,登录y,登出y - 尝试登录第二个时抛出异常:

GSSException:机制级别:修改了消息流(41))

只是为了澄清 - 只有当我使用2个不同的域/ KDC(当然每次一个)时才会出现问题,而不会在这两个域之间重新启动整个应用程序。

我认为java / gssapi以某种方式缓存领域或krb票证,或其他东西。

问题是如何清除此缓存(不杀死整个应用程序),或者如果没有这样的缓存/静态变量,我该如何使其工作?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题可能是错误的krb5.conf文件。见这里:GSSException: Message stream modified (41)

发布您的整个krb5.conf罚款和访问过的SPN。