2015-02-11 71 views
0

在我的Web應用程序中,我必須使用Spring Security並使用LDAP獲取用戶的認證詳細信息,並使用JDBC獲取用戶的授權詳細信息。用戶提交表單並從中獲取用戶名和密碼。如何爲LDAP和JDBC配置Spring?

  1. 如何在我的WebSecurityConfig文件中獲取用戶名和密碼?
  2. 如何配置授權和驗證?

WebSecurityConfig

@Configuration 
@EnableWebMvcSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests().anyRequest().authenticated().and().formLogin() 
     .loginPage("/").permitAll(); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) 
      throws Exception { 
     auth.ldapAuthentication().userDnPatterns("uid={0},ou=people") 
       .groupSearchBase("ou=groups").contextSource(contextSource()); 
    } 

    @Bean 
    public DefaultSpringSecurityContextSource contextSource() { 
     DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource(
       "ldap://mjkoldc-03.red.com"); 
     contextSource.setUserDn("mj\\" + email); 
     contextSource.setPassword(password); 
     contextSource.setReferral("follow"); 
     contextSource.afterPropertiesSet(); 
     return contextSource; 

    } 
} 

使用LDAPTemplate以前我得到的信息:

LdapQuery query = query().base("dc=metaljunction,dc=com") 
      .attributes("GivenName", "sn", "mail", "MobilePhone") 
      .where("ObjectClass").is("user").and("SamAccountName") 
      .is(email); 

回答

1

如果你什麼authentificate agains LDAP和Autorize(得到JDBC用戶角色),你應該實現LdapAuthoritiesPopulator在。

​​

,並把它添加到您的SecurityConfig

public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth   
      .ldapAuthentication() 
       .ldapAuthoritiesPopulator(new CustomAuthoritiesPopulator()) 
       .userSearchFilter("yourfilter")    
      .contextSource(contextSource());  
    } 
} 

所有類似的用戶通過LDAP authentificated將自動獲得 「ROLE_ADMIN」。

相關問題