2009-03-26 4 views
1

Gibt es eine Möglichkeit in Java, Active Directory nach Benutzerattributen abzufragen, wenn ein vorhandenes javax.security.auth.kerberos.KerberosTicket an meinen Code weitergeleitet wurde? Ich weiß, ich möchte Ldap verwenden, um die Suche zu tun, aber ich bin verwirrt, wie dieses KerberosTicket-Objekt verwendet wird, um an ldap zu binden. Momentan benutze ich Spring-Ldap und Spring-Security, um mit Active Directory zu kommunizieren und einfache Authentifizierungsdaten zu verwenden. Ich kann einen Benutzernamen und ein Passwort zur Authentifizierung meines Benutzers und alle meine Attribute, Rollen usw. binden ein KerberosTicket von diesem Active Directory Server Ich weiß jetzt wie ich mich anbinde, weil ich das Passwort für diesen Benutzer nicht kenne. Ich rufe derzeit login() nicht von einem LoginContext ab, um mein KerberosTicket als verschlüsseltes Java-Objekt an meinen Code weiterzuleiten.Verwenden Sie ein vorhandenes KerberosTicket, um an Ldap zu binden und nach Benutzerattributen zu suchen

Antwort

1

Setzen Sie in Ihrer LDAP-Verbindungsumgebung Context.SECURITY_AUTHENTICATION auf "GSSAPI". Erstellen Sie dann den InitialLdapContext in einer privilegierten Aktion:

InitialLdapContext Kontext; Subject.doAs (Subjekt, neue PrivilegedAction() { public Object run() { Kontext = new InitialLdapContext (env, null);} };

Sie erhalten das Subjektvariable durch getSubject Aufruf() auf Ihr LoginContext.env ist die Umgebung. Sie müssen irgendwie eine NamingException abfangen. Beachten Sie, dass Sie einen Registry-Eintrag einrichten müssen, um dies mit neueren Windows-Versionen zu machen, siehe http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html (Registry suchen).

Verwandte Themen