代码之家  ›  专栏  ›  技术社区  ›  Keshav

在Java中重新加载Kerberos配置文件而不重新启动JVM

  •  7
  • Keshav  · 技术社区  · 17 年前

    下面的代码用于使用Java+Kerberos对Windows广告服务器进行身份验证,并且它运行良好。

    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文件发生更改,那么Tomcat中不会反映出相同的情况,如果之前版本的krb5.conf已经成功地进行了一次身份验证,那么新的更改只反映在Tomcat重新启动时。

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

    1 回复  |  直到 14 年前
        1
  •  7
  •   Keshav    14 年前

    好的,解决了这个问题。

    应为jaas.conf中的krb5loginmodule设置refreshkrb5config=true。