使用Java以编程方式使用不同的keytabs登录多个kerberos领域

出于某种原因,我的客户需要登录两个kerberos领域..我们说REALM1和REALM2.我的主体已在两个域中签名,创建了两个不同的keytabs(使用keytab1的principal / host @ REALM1和使用keytab2的principal / host @ REALM2).换句话说,我可以用两个不同的领域来表达我的校长.

现在我需要运行一个应用程序,其中首先需要在realm1中完成一些任务,然后需要在realm2中完成其他任务,所以我必须首先登录realm1,完成一些工作然后登录realm2.我尝试通过在程序中间重置系统属性“java.security.krb5.conf”来实现,但无法从realm1切换到realm2(登录失败,似乎默认域保持不变.)

我搜索并查看了相关帖子的答案(Kerberos Auth与JAAS和多个领域),我理解一个keytab绑定到一个领域 – 我不明白的是 – 我为两个领域生成了两个keytabs – 为什么可以那么登录两个领域?是通过跨领域认证来实现它的唯一方法..?

解决方法:

不要那样做.建立跨领域信任,您可以使用客户端的原始密钥表来执行外部领域中的所有任务.我们这里至少有30个领域,当然我的Unix机器加入了一个领域.这非常整洁.

上一篇:Kerberos spring javax.security.auth.login.LoginException:无法从用户获取密码


下一篇:Kafka Java Producer与kerberos