Nous utilisons JAAS pour activer l'authentification unique dans une application Java à l'aide du cache de tickets Windows Kerberos. Notre fichier de configuration Jaas.conf ressemble à ceci:Comment valider un ticket Kerberos sur un serveur Java?
LoginJaas {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
doNotPrompt=true
debug=true;
};
Avec cela, nous pouvons créer un Jaas LoginContext et obtenir avec succès le ticket Kerberos de l'utilisateur. Nous envoyons ce ticket à l'application serveur en utilisant JMI. Ce que nous ne parvenons pas à faire est de vérifier sur le serveur que le ticket Kerberos a bien été créé par notre Active Directory.
Pour l'instant, nous effectuons une validation très peu sûre du ticket en vérifiant simplement si le nom du serveur principal (KerberosTicket.getServer()) a notre nom de domaine dans la partie domaine. Mais bien sûr, n'importe qui peut configurer son propre serveur Kerberos avec le même nom de domaine et utiliser ce ticket pour démarrer l'application.
Une idée que j'ai trouvé était d'authentifier contre le LDAP Active Directory en utilisant le ticket Kerberos. Malheureusement, nous utilisons Windows 7 et réutiliser le ticket Kerberos pour nous authentifier par rapport au protocole LDAP ne fonctionne que lors de la définition d'une entrée de registre (voir http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html, recherchez allowtgtsessionkey). Ceci est inacceptable pour nos utilisateurs.
Existe-t-il un moyen de valider le ticket sur notre serveur Active Directory? Je soupçonne qu'il existe un moyen de vérifier si le ticket KerberosTicket.getServer() est égal au ticket de notre serveur, mais je n'ai aucune idée de comment faire cela. UPDATE: KerberosTicket(). GetServer() renvoie uniquement un KerberosPrincipal qui ne contient rien d'autre que le nom et le domaine du ticket de serveur. Il ne convient donc pas à la validation.
Merci pour votre aide, MEMMINGER
Avez-vous déjà découvert cela? –