Rechargez la configuration Kerberos en JAVA sans redémarrer la machine virtuelle Java
Question
Le code suivant est destiné à l'authentification sur un serveur Windows AD à l'aide de Java + Kerberos et fonctionne correctement -
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 n’est qu’un programme de test. Le code réel sera exécuté dans une application Web tomcat. Le problème auquel je suis confronté est que, si le fichier krb5.conf est modifié, la même chose n'est pas reflétée dans le tomcat, si une authentification réussie a déjà eu lieu une fois avec la version antérieure de krb5.conf. Les nouvelles modifications ne concernent que le redémarrage de tomcat.
Je souhaite savoir s’il existe un moyen de spécifier la machine virtuelle Java pour recharger le fichier krb5.conf afin d’obtenir les dernières modifications sans redémarrer la machine virtuelle.
La solution
refreshKrb5Config = true
doit être défini pour KRB5LoginModule dans jaas.conf.