Java 如何使用spring Security基于邮件和uid从LDAP对用户进行身份验证?
我希望用户能够通过uid和邮件登录?如何使用我的spring安全配置实现这一点Java 如何使用spring Security基于邮件和uid从LDAP对用户进行身份验证?,java,spring,security,spring-boot,ldap,Java,Spring,Security,Spring Boot,Ldap,我希望用户能够通过uid和邮件登录?如何使用我的spring安全配置实现这一点 @Configuration @EnableWebSecurity public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.formLogin().passwordParameter("password");
}
@Configuration
protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {
@Autowired
LdapContextSource contextSource;
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0}")
.contextSource(contextSource);
}
}
}
在userDnPatterns,我可以指定另一个属性和uid吗?或者uid身份验证是标准的?您需要使用自定义用户搜索筛选器。以下代码使用OR筛选器,尝试将uid或mail与用户在登录屏幕中输入的值相匹配:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.formLogin().passwordParameter("password");
}
@Configuration
protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {
@Autowired
LdapContextSource contextSource;
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0}")
.userSearchFilter("(|(uid={0})(mail={0}))")
.contextSource(contextSource);
}
}
}