如何解决Spring Boot LDAP 身份验证获取错误凭据错误
我正在尝试使用 Spring Boot Ldap APP 通过 ldap 服务器进行身份验证并连接到本地 ldap 服务器 但仍然收到错误凭据错误,下面有一些代码
@EnableWebSecurity
public class LdapWebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginProcessingUrl("/login")
.usernameParameter("username")
.passwordParameter("password")
.successHandler( new DemoAuthenticationSuccessHandler() )
.failureHandler( new DemoAuthenticationFailureHandler() )
.and()
.exceptionHandling()
.authenticationEntryPoint( new DemoAuthenticationEntryPoint() )
.and()
.csrf()
.ignoringAntMatchers("/login");
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.ldapAuthentication()
.userDnPatterns("cn={0},OU=Users")
// .userSearchFilter("CN={0}")
.groupSearchBase("OU=Users")
.contextSource()
.url("ldap://localhost:10389/dc=example,dc=com")
.managerDn("cn=Adan Abrams,OU=Users,dc=example,dc=com")
.managerPassword("1qaz2wsx")
.and()
.passwordCompare()
.passwordEncoder(newPasswordEncoder())
.passwordAttribute("userPassword");
}
private PasswordEncoder newPasswordEncoder() {
final BCryptPasswordEncoder crypt = new BCryptPasswordEncoder();
return new PasswordEncoder() {
@Override
public String encode(CharSequence rawPassword) {
// Prefix so that apache directory understands that bcrypt has been used.
// Without this,it assumes SSHA and fails during authentication.
return "{CRYPT}" + crypt.encode(rawPassword);
}
@Override
public boolean matches(CharSequence rawPassword,String encodedPassword) {
// remove {CRYPT} prefix
return crypt.matches(rawPassword,encodedPassword.substring(7));
}
};
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId></groupId>
<artifactId>adAuth</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>adAuth</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-ldap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- <dependency> -->
<!-- <groupId>com.unboundid</groupId> -->
<!-- <artifactId>unboundid-ldapsdk</artifactId> -->
<!-- </dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
DemoController.java
@RestController
public class DemoController {
@GetMapping("/")
public String index() {
return "Welcome to the home page!";
}
}
test account password is verfied
是否缺少配置,任何帮助都会很棒。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。