【问题标题】:Java kinit determining lower case realm from AD domainJava kinit 从 AD 域确定小写领域
【发布时间】:2016-05-19 10:00:22
【问题描述】:

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

我们使用任何 Kerberos 配置文件,例如 krb5.conflogin.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


    【解决方案1】:

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

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

    现在,寻找根本原因……

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 1970-01-01
      • 2015-01-19
      • 2013-02-20
      • 2015-11-16
      • 2014-07-24
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多