Использовать существующий KerberosTicket для привязки к Ldap и поиска атрибутов пользователей. - PullRequest
1 голос
/ 26 марта 2009

Есть ли в Java способ запрашивать в Active Directory атрибуты пользователей с учетом существующего javax.security.auth.kerberos.KerberosTicket, который был перенаправлен в мой код? Я знаю, что хочу использовать Ldap для поиска, но я не совсем понимаю, как использовать этот объект KerberosTicket для привязки к ldap. В настоящее время я использую Spring-Ldap и Spring-Security для связи с Active Directory и использую простые учетные данные для аутентификации. Я могу связать имя пользователя и пароль для аутентификации моего пользователя и получения всех моих атрибутов, ролей и т. Д. Однако в случае, когда я прошел KerberosTicket от того сервера Active Directory, который я теперь знаю, как связать себя, потому что я не знаю пароль для этого пользователя. В настоящее время я не вызываю login () из LoginContext, чтобы получить мой KerberosTicket, он был перенаправлен в мой код в виде зашифрованного Java-объекта.

1 Ответ

1 голос
/ 10 февраля 2010

В вашей среде соединения LDAP установите для Context.SECURITY_AUTHENTICATION значение "GSSAPI". Затем создайте InitialLdapContext внутри привилегированного действия:

InitialLdapContext context; Subject.doAs (subject, new PrivilegedAction () { public Object run () { context = new InitialLdapContext (env, null); } };

Вы получаете переменную субъекта, вызывая getSubject () вашего LoginContext. env это среда. Вам придется как-то ловить исключение NamingException. Обратите внимание, что для того, чтобы это работало в более новых версиях Windows, вы должны установить запись реестра, см. http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html (поиск реестра).

...