Spring Security LDAP 登录错误凭证

Raf*_*onn 5 java spring spring-security spring-ldap maven

我正在尝试使用 Spring Security 来连接 LDAP,但它总是显示错误的凭据问题。
我想我的代码可能有问题:

\n\n
@Configuration\n@EnableWebSecurity\n@EnableGlobalMethodSecurity(prePostEnabled = true)\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\n    @Override\n    public void configure(WebSecurity web) throws Exception {\n        web.debug(true);\n    }\n    @Autowired\n    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {\n\n        auth.ldapAuthentication().userDnPatterns("sAMAccountName={0},OU=SupportUsers,OU=Users,OU=company,DC=ad,DC=company,DC=com,DC=pl")\n            .contextSource(contextSource()).passwordCompare().passwordAttribute("userPassword");\n    }\n    protected void configure(HttpSecurity http) throws Exception {\n        http\n            .authorizeRequests()\n                .anyRequest().fullyAuthenticated()\n                .and()\n            .formLogin();\n        http.csrf().disable(); //Vaadin already have built in csrf\n    }\n    @Bean\n    public LdapContextSource contextSource () {\n        LdapContextSource contextSource= new LdapContextSource();\n        contextSource.setUrl("ldap://192.168.2.2:389");\n        contextSource.setBase("dc=ad,dc=company,dc=com,dc=pl");\n        contextSource.setUserDn("CN=lister,OU=SupportUsers,OU=Users,OU=company,DC=ad,DC=company,DC=com,DC=pl");\n        contextSource.setPassword("examplePassword");\n        contextSource.setAnonymousReadOnly(false);\n        contextSource.setPooled(true);\n        contextSource.afterPropertiesSet();\n        return contextSource;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在代码中找不到错误,也许我做错了事情。这是我的 pom.xml:

\n\n
<?xml version="1.0" encoding="UTF-8"?>\n<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>pl.com.company</groupId>\n    <artifactId>LDAPSpringInitializr</artifactId>\n    <version>0.0.1-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <name>LDAPSpringInitializr</name>\n    <description>Demo project for Spring Boot</description>\n\n    <parent>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-parent</artifactId>\n        <version>1.5.3.RELEASE</version>\n        <relativePath/> <!-- lookup parent from repository -->\n    </parent>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <java.version>1.8</java.version>\n        <vaadin.version>8.0.5</vaadin.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-data-jpa</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-data-ldap</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-security</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.vaadin</groupId>\n            <artifactId>vaadin-spring-boot-starter</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-web</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.postgresql</groupId>\n            <artifactId>postgresql</artifactId>\n            <scope>runtime</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.security</groupId>\n            <artifactId>spring-security-ldap</artifactId>\n        </dependency>\n    </dependencies>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>com.vaadin</groupId>\n                <artifactId>vaadin-bom</artifactId>\n                <version>${vaadin.version}</version>\n                <type>pom</type>\n                <scope>import</scope>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我做错了什么吗?也许密码编码有问题?你好,拉法\xc5\x82

\n

Raf*_*onn 5

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

    auth.ldapAuthentication().userSearchFilter("(sAMAccountName={0})")
    .contextSource(contextSource());
}
Run Code Online (Sandbox Code Playgroud)

它有效,我刚刚改变了这个方法。

  • 非常感谢兄弟,我被困了好几个小时 (2认同)