2017-06-05 119 views
0

我想通过春季安全做LDAP验证。春季安全活动目录

我的代码...

auth.ldapAuthentication() 
      .userSearchFilter("(uid={0})").userSearchBase("ou=TTU") 
      .groupSearchFilter("uniqueMember={0}").groupSearchBase("ou=TTU") 
      .contextSource(contextSource()) 
      .passwordCompare() 
       .passwordEncoder(new LdapShaPasswordEncoder()) 
       .passwordAttribute("userPassword"); 

但总是返回401 “坏凭据” 什么可以在犯的错误? 也许有人有一个Java配置的例子。

回答

0

它的工作...也许任何人都会有帮助。

 auth.authenticationProvider(ldapAuthenticationProvider()); 
     auth.eraseCredentials(true); 



@Bean 
public DefaultSpringSecurityContextSource contextSource(){ 

    DefaultSpringSecurityContextSource contextSource = 
      new DefaultSpringSecurityContextSource(Arrays.asList("ldap://url:389/"),"dc=ttu,dc=ru"); 
    contextSource.setUserDn(userDn); 
    contextSource.setPassword(passwordForLDAP); 
    contextSource.setReferral("follow"); 
    return contextSource; 
    } 

@Bean 
public LdapAuthenticationProvider ldapAuthenticationProvider(){ 
    return new LdapAuthenticationProvider(ldapAuthenticator(),ldapAuthoritiesPopulator()); 
} 

@Bean 
public LdapAuthenticator ldapAuthenticator(){ 
    BindAuthenticator authenticator = new BindAuthenticator(contextSource()); 
    authenticator.setUserSearch(userSearch()); 
    return authenticator; 
} 

@Bean 
public DefaultLdapAuthoritiesPopulator ldapAuthoritiesPopulator(){ 
    DefaultLdapAuthoritiesPopulator ldapAuthoritiesPopulator = 
      new DefaultLdapAuthoritiesPopulator(contextSource(),"ou=TTU"); 
    ldapAuthoritiesPopulator.setSearchSubtree(true); 
    ldapAuthoritiesPopulator.setIgnorePartialResultException(true); 
    //ldapAuthoritiesPopulator.setGroupSearchFilter("member={0}"); 
    ldapAuthoritiesPopulator.setRolePrefix("ROLE_"); 
    ldapAuthoritiesPopulator.setConvertToUpperCase(true); 
    return ldapAuthoritiesPopulator; 
} 

@Bean 
public FilterBasedLdapUserSearch userSearch(){ 
    FilterBasedLdapUserSearch filterBasedLdapUserSearch = 
      new FilterBasedLdapUserSearch("","(sAMAccountName={0})",contextSource()); 
    filterBasedLdapUserSearch.setSearchSubtree(true); 
    return filterBasedLdapUserSearch; 
}