我想在多个服务器线程中使用多个 keytab。我不想使用 JAAS conf 文件,所以我在 LoginConfiguration 类中实现了我自己的登录配置。KerberosLogin 类中的 getGSSCredentials() 函数用于通过将 keytab 位置作为参数来获取凭据。
KerberosLogin -> http://ideone.com/vaip3H LoginConfiguration -> http://ideone.com/jDqlN0
当我只运行两个服务器线程时,第一个能够从其密钥表中获取凭据(两个服务器线程使用不同的服务主体),而第二个失败。在 LoginConfiguration 中使用以某种方式parms.put("refreshKrb5Config","true");
解决了这个问题。
我无法理解为什么在不刷新配置的情况下它不能工作,并且对于将有多个这样的服务器线程的情况,它是否可以安全使用。有没有更好的方法来使用多个 keytab?