2009-09-17 8 views
6

Le code suivant est pour l'authentification à un serveur AD Windows en utilisant Java + Kerberos et il fonctionne fine Recharger config Kerberos en JAVA sans redémarrer 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); 
} 
} 

Ce qui précède est juste un programme de test. Le code actuel sera exécuté dans une application Web Tomcat. Le problème auquel je fais face est, si le fichier krb5.conf change, le même n'est pas reflété dans le tomcat, si une authentification réussie s'est déjà produite une fois avec la version antérieure de krb5.conf. Les nouveaux changements ne reflètent que le redémarrage de tomcat.

Je veux savoir s'il existe un moyen de spécifier la JVM pour recharger le fichier krb5.conf afin qu'il obtienne les dernières modifications sans redémarrer la JVM.

+0

Quelle est votre variable 'auth'? C'est indéfini. –

+0

Eh bien, ceci est juste un extrait du code. Le "auth" fait référence à un paquet qui a la classe "KerberosAuthenticator". – Keshav

+0

Merci, je comprends maintenant! Je cherchais un extrait réutilisable pour la connexion Kerberos, mais je suppose que je ne peux pas l'utiliser si KerberosAuthenticator est votre code personnalisé. –

Répondre

5

OK, résolu celui-ci. RefreshKrb5Config = true doit être défini pour le module KRB5Login dans le fichier jaas.conf.