gpt4 book ai didi

java - 如何使用 spring Security 基于邮件和 uid 从 LDAP 验证用户?

转载 作者:行者123 更新时间:2023-11-30 08:00:11 25 4
gpt4 key购买 nike

我希望用户能够通过他的 uid 和邮件登录?如何使用我的 spring 安全配置实现这一点?

@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 或邮件与用户在登录屏幕中输入的值相匹配:

@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);
}
}
}

关于java - 如何使用 spring Security 基于邮件和 uid 从 LDAP 验证用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38692200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com