2016-04-19 3 views
0

Я попытался выполнить аутентификацию LDAP, используя весеннюю безопасность, используя конфигурацию ниже. Аутентификация прошла успешно.Аутентификация Spring Security + Ldap

<authentication-manager> 
    <ldap-authentication-provider 
     user-search-filter="(uid={0})" 
     user-search-base="ou=people" 
     > 
    </ldap-authentication-provider> 
    </authentication-manager> 

    <ldap-server url="ldap://ldap.XXX.net/dc=XXX,dc=com" manager-dn="dc=XXX,dc=com" manager-password="" /> 

Теперь мне нужно, чтобы получить информацию о пользователе, как домен, организации и т.д. от самого LDAP через Java я могу получить результаты, используя путем вызова метода поиска LdapContext. Есть ли аналогичный способ получить детали, требуемые с помощью весенней безопасности после успешной аутентификации?

LdapContext ctx = null; 
    NamingEnumeration<SearchResult> results = null; 
    results = ctx.search(baseDn,searchFilter,controls); 

ответ

0

Вы можете использовать userContextMapper свойства от поставщика аутентификации LDAP:

<authentication-manager> 
     <ldap-authentication-provider 
      user-search-filter="(uid={0})" 
      user-search-base="ou=people" 
      user-context-mapper-ref="customUserContextMapper" /> 
      > 
     </ldap-authentication-provider> 
     </authentication-manager> 


    public class CustomUserContextMapper extends LdapUserDetailsMapper { 
     @Override 
     public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) {} 

    } 

Вы можете использовать ctx запрашивать необходимую информацию.

+0

Спасибо, Майкл. Это сработало. – Nagendra

Смежные вопросы