2009-09-17 12 views
6

Il seguente codice è per l'autenticazione a un server Windows AD utilizzando Java + Kerberos e funziona Fine-Ricarica Kerberos config in JAVA senza riavviare JVM

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); 
} 
} 

Quanto sopra è un solo un programma di test. Il codice effettivo verrà eseguito in una webapp tomcat. Il problema che sto affrontando è, se il file krb5.conf cambia, lo stesso non si riflette nel tomcat, se una autenticazione di successo è già successo una volta con la versione precedente di krb5.conf. Le nuove modifiche riflettono solo sul riavvio di tomcat.

Desidero sapere se esiste un modo per specificare la JVM per ricaricare krb5.conf in modo da ottenere le ultime modifiche senza riavviare la JVM.

+0

Qual è la tua variabile 'auth'? Non è definito. –

+0

Bene, questo è solo un frammento del codice. "Auth" si riferisce a un pacchetto che ha la classe "KerberosAuthenticator". – Keshav

+0

Grazie, capisco ora! Stavo cercando uno snippet riutilizzabile per effettuare l'accesso a Kerberos, ma suppongo di non poterlo usare se KerberosAuthenticator è il tuo codice personalizzato. –

risposta

5

OK, risolto questo.

refreshKrb5Config = true deve essere impostato per KRB5LoginModule in jaas.conf.