【发布时间】:2016-05-19 10:00:22
【问题描述】:
我们在 Windows 上有一个基于 Java 的企业级应用程序,我们希望将 Kerberos 用于单点登录。
我们不使用任何 Kerberos 配置文件,例如 krb5.conf 或 login.conf,因为我们希望让我们的客户端尽可能简单并具有弹性。
它过去几周运行良好,只是大多数人不得不重新输入他们的 Windows 密码进行身份验证。稍后我可能会发布另一个关于此的问题。
现在,由于某种原因,应用程序将 Kerberos 主体确定为 username@corp.example.com 而不是 username@CORP.EXAMPLE.COM。然后,身份验证自然会失败,krb_error 41 Message stream modified。注销再重新登录最终会暂时解决该问题。
这可以通过使用 Java JDK 中的库存 kinit.exe(或调用其类 sun.security.krb5.internal.tools.Kinit)来复制。由于我没有找到任何有关 kinit 在没有提供主体名称时的实际行为的信息,因此我不知道在哪里寻找任何原因。
【问题讨论】:
标签: java windows active-directory kerberos