Spring Security, расширение Kerberos и AD
Я пытаюсь использовать в своем проекте аутентификацию Kerberos. Для моей компании это внутренняя служба, и я хочу аутентифицировать пользователей и извлекать из нашей Active Directory группы пользователей. Для этого я использую Spring Security, расширение Kerberos и AD нашей компании.
Проблема: я могу аутентифицироваться с Kerberos, но наш домен в AD - "WAN.CORP.COM". Таким образом, я получаю своих пользователей с username@WAN.CORP.COM, и нет никакого фильтра, который я могу попросить об этом в AD (userPrincipalName похожи на username@corp.com).
Мой security.xml содержит:
<sec:ldap-user-service id="ldapUserService" server-ref="ldapCorp" user-search-filter="(userPrincipalName={0})" />
<sec:ldap-server id="ldapCorp" url="ldap://ldap.wan.corp.com:389/DC=wan,DC=corp,DC=com" manager-dn="CN=ldap read,OU=CORP,DC=wan,DC=corp,DC=com" manager-password="pass" />
Но Spring Security отправляет исключение, потому что не может получить user@WAN.CORP.COM...
Кто-нибудь может мне помочь? Я бы хотел сделать это непосредственно в Spring Security, если нет, думаю, я могу получить информацию в DummyUserDetailsService, я прав?
Большое спасибо, и извините за мой плохой английский...
2 ответа
Вы можете предоставить свою собственную реализацию UserDetailsService, в которую вы добавляете LdapUserDetailsService.
В методе loadUserByUsername вы можете изменить имя пользователя и затем вызвать loadUserByUsername LdapUserDetailsService с измененным именем пользователя.
В Spring security 3.1 уже реализована аутентификация LDAP / AD.
посмотрите его здесь: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/ldap.html http://javarevisited.blogspot.com/2011/11/ldap-authentication-active-directory.html