Comment valider un ticket Kerberos sur un serveur Java?

nous sommes à l'aide de JAAS pour activer la connexion Unique dans une application Java à l'aide de la Windows Kerberos ticket cache. Notre jaas.conf fichier de configuration ressemble à ceci:

LoginJaas {
  com.sun.security.auth.module.Krb5LoginModule required
  useTicketCache=true
  doNotPrompt=true
  debug=true;
};

Avec cela, nous pouvons créer un Jaas LoginContext et avec succès obtenir à l'utilisateur du ticket Kerberos. Nous envoyons ce billet pour sortir de l'application serveur à l'aide de JMI. Ce que nous ne parvenons pas à faire est de vérifier sur le serveur que le ticket Kerberos a en fait été créé par notre Active Directory.

Pour le moment, nous faisons une très précaire validation du ticket simplement de vérifier si le Serveur Principal (KerberosTicket.getServer()) nom a notre nom de domaine dans le domaine. Mais bien sûr, n'importe qui peut créer un 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 à l'authentification Active Directory LDAP en utilisant le ticket Kerberos. Malheureusement, nous avons de l'utilisation de Windows 7 et de ré-utiliser le ticket Kerberos pour l'authentification LDAP fonctionne uniquement lorsque le paramètre est une entrée de Registre (voir http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.htmlrecherche pour allowtgtsessionkey). Ce qui est inacceptable pour nos utilisateurs.

Est-il possible de valider le ticket à l'encontre de notre serveur Active Directory? Je pense qu'il y est une manière de vérifier si la KerberosTicket.getServer() billet d'entrée est égale à la billetterie de notre serveur, mais je n'ai aucune idée de comment faire cela. Mise à JOUR: KerberosTicket().getServer() ne renvoie une KerberosPrincipal qui ne contient rien, mais le serveur billet nom et domaine, de sorte qu'il n'est pas adapté pour la validation.

Merci pour votre aide,
memminger hütte

source d'informationauteur user269667