<分区>
我正在尝试创建一个 JAVA 程序,它将获取我的 Windows 用户凭据,然后连接到我的 unix 机器上的 kerberos 并进行身份验证并允许我使用一项服务,例如 LDAP 服务器。
我发现的所有示例都倾向于在运行时询问我的密码,我不想要这个 - 我希望能够运行该程序并且“如果通过魔法”im kerberos 已通过身份验证。
感谢任何链接和示例。
<分区>
我正在尝试创建一个 JAVA 程序,它将获取我的 Windows 用户凭据,然后连接到我的 unix 机器上的 kerberos 并进行身份验证并允许我使用一项服务,例如 LDAP 服务器。
我发现的所有示例都倾向于在运行时询问我的密码,我不想要这个 - 我希望能够运行该程序并且“如果通过魔法”im kerberos 已通过身份验证。
感谢任何链接和示例。
最佳答案
经过数周的试验和网络抓取,我们已经成功地使用 Kerberos 和 Java EE 应用程序设置了 SSO,并针对 Windows Active Directory 进行了身份验证。
JBOSS Negotiation 和 Spring Kerberos 都对我们有用。但是,这两套文档都不够准确,无法让您开始运行。对任何一种解决方案都简单...
ktpass 问题:
ktpass/out c:\service.keytab/mapuser userservice@TESTDOMAIN.SERVER.COM/princ HTTP/hostname@TESTDOMAIN.SERVER.COM/pass/ptype KRB5_NT_PRINCIPAL
setspn –A HTTP/hostname.testdomain.server.com 用户服务
最后,在每次测试之前,使用 kinit purge 清除缓存的票证。
此外,重复的 SPN 会严重破坏事情! Windows Server 2008 中的 setspn -X 将检测到这一点(或 google 脚本),如果在执行此操作时有疑问,每次都使用新的服务用户和主体名称重新开始!
希望这可以帮助人们避免我所经历的痛苦。
关于java - 使用 Java 实现的 Kerberos SSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935954/