在同一Java应用程序中使用不同的Kerberos KDC进行身份验证

时间:2017-01-12 15:15:16

标签: java kerberos

对Kerberos身份验证的本机Java支持使用系统属性java.security.krb5.kdcjava.security.krb5.realm来指定确切要求确认用户凭据的服务器。 有没有什么好方法可以在具有相同应用程序的不同服务器上进行身份验证?

E.g。我想要对服务器smith上的用户peons.company.com进行身份验证,对johndoe上的用户bigbosses.company.com进行身份验证。我可以尝试使用System.setProperty()来切换KDC,但我不知道Java Kerberos实现是否真的支持它。更不用说它需要线程之间的同步并且通常感觉很难。

[请不要告诉我如何通过不同的服务器配置来解决这个问题,我无法控制它们。]

1 个答案:

答案 0 :(得分:3)

再次阅读Oracle docs - 您需要设置这两个属性 当且仅当 您无法指向完整的Kerberos配置文件。请注意......

  

如果您设置了这些属性,则没有跨领域身份验证   可能除非还提供了krb5.conf文件


所以,理所当然的事情是忘记这些属性,而是指向一个详细的自定义配置文件java.security.krb5.conf

Kerberos配置将包含

  • 具有特定KDC的领域列表(主要,可选择故障转移)
  • 服务器到域的映射(如果您需要为其他服务器上的经过身份验证的用户获取Kerberos服务票证)
  • 领域之间的信任关系(默认情况下,尝试从A.COMPANY.NET连接到服务器的B.COMPANY.NET的主体必须首先跳到根COMPANY.NET,所以你有在列表中定义那个)

MIT documentation for krb5.conf有点干,但谷歌会给你一些例子......