在JAVA中重新加载Kerberos配置而不重新启动JVM

时间:2009-09-17 07:43:26

标签: java tomcat kerberos jaas

以下代码用于使用Java + Kerberos对Windows AD服务器进行身份验证,并且工作正常 -

public class KerberosAuthenticator {
  public static void main(String[] args) {
    String jaasConfigFilePath = "/myDir/jaas.conf";

    System.setProperty("java.security.auth.login.config", jaasConfigFilePath);

    String krb5ConfigFilePath = "/etc/krb5/krb5.conf";
    System.setProperty("java.security.krb5.conf", krb5ConfigFilePath);

    boolean success = auth.KerberosAuthenticator.authenticate("testprincipal", "testpass");

    System.out.println(success);
}
}

以上只是一个测试程序。实际代码将在tomcat webapp中运行。我面临的问题是,如果krb5.conf文件发生变化,如果使用早期版本的krb5.conf成功进行了一次身份验证,那么tomcat中就不会反映出来。新的更改仅反映了tomcat的重新启动。

我想知道是否有办法指定JVM重新加载krb5.conf,以便在不重新启动JVM的情况下获取最新的更改。

1 个答案:

答案 0 :(得分:7)

好的,解决了这个。

应为jaas.conf中的KRB5LoginModule设置refreshKrb5Config = true。