Spring boot 与LDAP通信时始终获取错误的凭据
我在与LDAP通信时收到错误的凭据 我已经设置了管理员用户(并且可以很好地登录到Windows Server 2012),并且在服务器上安装了Active Directory域服务。 我不认为我的应用程序有任何问题,因为它与.ldif文件嵌入式spring一起工作很好,我也尝试过下面的开放式服务器,它也工作得很好 我也共享DC结构,如果我从代码中传递任何错误信息,请纠正我 任何帮助都将不胜感激 配置Spring boot 与LDAP通信时始终获取错误的凭据,spring-boot,spring-security,ldap,spring-ldap,spring-security-ldap,Spring Boot,Spring Security,Ldap,Spring Ldap,Spring Security Ldap,我在与LDAP通信时收到错误的凭据 我已经设置了管理员用户(并且可以很好地登录到Windows Server 2012),并且在服务器上安装了Active Directory域服务。 我不认为我的应用程序有任何问题,因为它与.ldif文件嵌入式spring一起工作很好,我也尝试过下面的开放式服务器,它也工作得很好 我也共享DC结构,如果我从代码中传递任何错误信息,请纠正我 任何帮助都将不胜感激 配置 @Configuration public class WebSecurityConfig
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)
throws Exception {
System.out.println(
"WebSecurityConfig configure(HttpSecurity http)");
http.authorizeRequests().anyRequest()
.fullyAuthenticated().and().formLogin();
}
@Override
public void configure(AuthenticationManagerBuilder auth)
throws Exception {
System.out.println(
"WebSecurityConfig configure(AuthenticationManagerBuilder auth)");
auth.ldapAuthentication()
.userDnPatterns("uid={0},ou=Users")
//.groupSearchBase("ou=groups")
.contextSource(contextSource()).passwordCompare()
.passwordEncoder(new LdapShaPasswordEncoder())
.passwordAttribute("userPassword");
}
@Bean
public DefaultSpringSecurityContextSource contextSource() {
System.out.println(
"DefaultSpringSecurityContextSource contextSource()");
return new DefaultSpringSecurityContextSource(
Arrays.asList("ldap://test.local:389/"),
"dc=test,dc=local");
}
}
即使Active Directory是一种LDAP,标准LDAP支持(在SpringSecurity中)也不适用于它。相反,您应该使用专用的ActiveDirectoryLdapAuthenticationProvider:
@Bean
public ActiveDirectoryLdapAuthenticationProvider adProvider(){
返回新的ActiveDirectoryLdapAuthenticationProvider(“您的域”ldap://test.local:389/");
}
@凌驾
public void configure(AuthenticationManagerBuilder auth)引发异常{
auth.authenticationProvider(adProvider());
}
不要忘记将域更改为要登录的域。堆栈跟踪?当你的问题是关于OpenLDAP时,你为什么要谈论active directory?我以OpenLDAP为例,但是我们的客户机有AD,我们已经创建了一些用户,但无法与AD连接。telnet是可访问的,连接正在工作。但这是一个例外