对Kerberos身份验证的本机Java支持使用系统属性java.security.krb5.kdc
和java.security.krb5.realm
来指定确切要求确认用户凭据的服务器。 有没有什么好方法可以在具有相同应用程序的不同服务器上进行身份验证?
E.g。我想要对服务器smith
上的用户peons.company.com
进行身份验证,对johndoe
上的用户bigbosses.company.com
进行身份验证。我可以尝试使用System.setProperty()
来切换KDC,但我不知道Java Kerberos实现是否真的支持它。更不用说它需要线程之间的同步并且通常感觉很难。
[请不要告诉我如何通过不同的服务器配置来解决这个问题,我无法控制它们。]
答案 0 :(得分:3)
再次阅读Oracle docs - 您需要设置这两个属性 当且仅当 您无法指向完整的Kerberos配置文件。请注意......
如果您设置了这些属性,则没有跨领域身份验证 可能除非还提供了krb5.conf文件
所以,理所当然的事情是忘记这些属性,而是指向一个详细的自定义配置文件java.security.krb5.conf
Kerberos配置将包含
等A.COMPANY.NET
连接到服务器的B.COMPANY.NET
的主体必须首先跳到根COMPANY.NET
,所以你有在列表中定义那个) MIT documentation for krb5.conf有点干,但谷歌会给你一些例子......