Spring Security + Ldap身份验证

时间:2016-04-19 08:02:04

标签: spring-security ldap spring-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的搜索方法来获取结果。在成功进行身份验证后,是否有类似的方法来获取使用Spring安全性所需的详细信息?

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

1 个答案:

答案 0 :(得分:0)

您可以在ldap身份验证提供程序中使用userContextMapper属性:

<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查询必要的信息。