【发布时间】:2015-08-18 23:06:53
【问题描述】:
我们在应用程序中使用带有 Spring 安全性的 Spring Boot。 使用 Spring db 身份验证进行 web 身份验证,并计划使用 ldap 进行 JMS 身份验证。
@Configuration
@EnableWebMvcSecurity
@ComponentScan
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
@SuppressWarnings("PMD")
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http.authorizeRequests()
.antMatchers("/login", "/logoffUser", "/sessionExpired", "/error", "/unauth").permitAll()
.anyRequest().authenticated().and().rememberMe().and().httpBasic()
.authenticationEntryPoint(entryPointObj).and()
.addFilterAfter(filterObj, PreAuthenticatedProcessingFilter.class).csrf()
.disable().logout().deleteCookies("JSESSIONID").logoutSuccessUrl("/logoff").invalidateHttpSession(true);
}
}
网络身份验证正常工作。
对于 LDAP 身份验证,我们使用以下代码。
@Configuration
public class LdapAuthenticationConfig extends
GlobalAuthenticationConfigurerAdapter {
/** The environment. */
private Environment environment;
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchFilter(
"(&(sAMAccountName={0})(objectclass=organizationalPerson))")
.userSearchBase("OU=${ldap.user-search-base.name}")
.groupSearchFilter("(member={0})")
.groupSearchBase("OU=Global-Groups")
.groupRoleAttribute("un")
.contextSource()
.url(environment.getProperty("ldap.url"))
.managerDn(environment.getProperty("ldap.conn.user"))
.managerPassword(environment.getProperty("ldap.conn.pwd"));
// authenticationManager = auth.getObject();
}
@Autowired
public void setEnvironment(Environment environment) {
this.environment = environment;
}
}
我不确定如何为 ldap 公开 AuthnticationManager,以便可以将其注入到其他一些类中,如下所示。
Public class JmsConfig {
@Autowired
@Qualifier("ldapAuthManager")
private AuthenticationManager authenticationManager;
}
【问题讨论】:
标签: spring spring-security spring-ldap