Java kinit从AD域确定小写领域

时间:2016-05-19 10:00:23

标签: java windows active-directory kerberos

我们在Windows上有一个基于Java的企业级应用程序,我们希望使用Kerberos进行单点登录。

我们使用任何Kerberos配置文件,例如krb5.conflogin.conf,因为我们希望让客户尽可能简单并且尽可能保持弹性。

它过去几周都运行良好,只是大多数人不得不重新输入他们的Windows密码进行身份验证。我稍后可能会再发一个问题。

现在,由于某种原因,应用程序将Kerberos prinicpal确定为username@corp.example.com而不是username@CORP.EXAMPLE.COM。然后,身份验证失败,当然是krb_error 41 Message stream modified。注销然后再次打开最终会暂时解决该问题。

可以使用Java JDK中的stock kinit.exe(或调用其类sun.security.krb5.internal.tools.Kinit)来复制。由于我没有找到关于kinit在没有提供主要名称时如何表现的任何信息,我不知道在哪里寻找任何原因。

1 个答案:

答案 0 :(得分:0)

原因是由于某种原因,Windows在某些情况下决定将USERDNSDOMAIN环境变量设置为小写。

Kinit从那里获得默认领域,请参阅链接以供参考:http://www.docjar.com/html/api/sun/security/krb5/Config.java.html#1071

现在,根本原因......