Spring security 用于SpringLDAP身份验证的登录名是什么
我创建了一个本地LDAP服务器,并添加了密码为“123456”的用户“djiao” 正在尝试通过Spring引导使用Spring Security实现身份验证。我的webconfig类如下所示:Spring security 用于SpringLDAP身份验证的登录名是什么,spring-security,spring-boot,ldap,Spring Security,Spring Boot,Ldap,我创建了一个本地LDAP服务器,并添加了密码为“123456”的用户“djiao” 正在尝试通过Spring引导使用Spring Security实现身份验证。我的webconfig类如下所示: @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(Htt
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin();
}
@Bean
public ActiveDirectoryLdapAuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("", "ldap://localhost:10389");
provider.setConvertSubErrorCodesToExceptions(true);
provider.setConvertSubErrorCodesToExceptions(true);
provider.setUseAuthenticationRequestCredentials(true);
return provider;
}
@Bean
public LoggerListener loggerListener() {
return new LoggerListener();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider());
}
但是,我似乎无法从登录页面登录
登录的用户名应该是什么?或者我在websecurityconfig类中遗漏了什么吗?因为从您的代码中我可以识别您正在使用Spring Boot 这就是我们连接到LDAP的工作原理
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder authBuilder) throws Exception {
authBuilder
.ldapAuthentication()
.userSearchFilter("(sAMAccountName={0})")
.userSearchBase("dc=some,dc=domain,dc=com")
.groupSearchBase("ou=groups,dc=some,dc=domain,dc=com")
.groupSearchFilter("member={0}")
.contextSource()
.url("ldaps://<ldap-server>")
.port(639)
.managerDn("cn=binduser,ou=users,dc=some,dc=domain,dc=com")
.managerPassword("some pass")
;
}
}
顺便说一句:这还允许您将不同的身份验证机制(如InMemory(默认管理员后门))与LDAP和/或JDBC相结合。正如我所看到的,您正在使用AD连接器,该连接器正在查找名为SAMAccountName而非uid的属性。请使用“正常”选项进行检查“Ldap连接器.@daniel.eichen我是Spring Security的新手。使用普通ldap连接器需要做哪些更改?它现在可以工作了。你能看一下我的另一篇关于对机构ldap服务器进行身份验证的文章吗?
@Autowired
public void configureGlobal(AuthenticationManagerBuilder authBuilder) throws Exception {
authBuilder
.ldapAuthentication()
.userSearchFilter("(sAMAccountName={0})")
.userSearchBase("dc=emea,dc=domain,dc=com")
.groupSearchBase("ou=groups,dc=emea,dc=domain,dc=com")
.groupSearchFilter("member={0}")
.contextSource()
.url("ldaps://<emea-ldap-server>")
.port(639)
.managerDn("cn=binduser,ou=users,dc=emea,dc=domain,dc=com")
.managerPassword("some pass")
.and()
.and()
.ldapAuthentication()
.userSearchFilter("(sAMAccountName={0})")
.userSearchBase("dc=ap,dc=domain,dc=com")
.groupSearchBase("ou=groups,dc=ap,dc=domain,dc=com")
.groupSearchFilter("member={0}")
.contextSource()
.url("ldaps://<ap-ldap-server>")
.port(639)
.managerDn("cn=binduser,ou=users,dc=ap,dc=domain,dc=com")
.managerPassword("some pass")
;
}