Est-ce que quelqu'un sait comment obtenir un ticket de service du Centre de distribution de clés (KDC) en utilisant Java GSS-API? J'ai une application client lourd qui s'authentifie d'abord via JAAS en utilisant Krb5LoginModule pour aller chercher le TGT dans le cache de ticket (background: Windows utilise par exemple une implémentation kerberos et stocke le ticket de ticket dans une zone de mémoire sécurisée). À partir de LoginManager, j'obtiens l'objet Subject qui contient le TGT. Maintenant, j'espérais que lorsque je créerais un objet GSSCredential spécifique pour mon service, le ticket de service serait également mis dans les informations d'identification privées du sujet (j'ai lu quelque part sur le web). J'ai donc essayé ce qui suit:Comment obtenir un ticket de service kerberos via GSS-API?
// Exception handling ommitted
LoginContext lc = new LoginContext("HelloEjbClient", new DialogCallbackHandler());
lc.login()
Subject.doAs(lc.getSubject(), new PrivilegedAction() {
public Object run() {
GSSManager manager = GSSManager.getInstance();
GSSName clientName = manager.createName("clientUser", GSSName.NT_USER_NAME);
GSSCredential clientCreds = manager.createCredential(clientName, 8 * 3600, createKerberosOid(), GSSCredential.INITIATE_ONLY);
GSSName serverName = manager.createName("[email protected]", GSSName.NT_HOSTBASED_SERVICE);
manager.createCredential(serverName, GSSCredential.INDEFINITE_LIFETIME, createKerberosOid(), GSSCredential.INITIATE_ONLY);
return null;
}
private Oid createKerberosOid() {
return new Oid("1.2.840.113554.1.2.2");
}
});
Malheureusement je reçois une GSSException: Aucune information d'identification valides fournies (niveau du mécanisme: Impossible de trouver Kerberos TGT).
@Michael: Merci pour votre contribution. Comme vous pouvez le voir, j'ai écrit cela il y a un certain temps, donc je ne me souviens pas des détails exacts, mais je suis à peu près sûr que c'était juste un exemple. Que pensez-vous peut être fait pour améliorer cette réponse? –
vérifiez votre lien vers le tutoriel Sun SSO avec Kerberos et jetez un oeil à la figure 6. Il ya la boucle que j'ai écrit à propos de. –
Je pense que je n'ai pas inclus la boucle car je ne pouvais pas comprendre ce que les méthodes readToken() et sendToken (...) sont supposées faire. –