Spring Security无法使用ActiveDirectoryLdapAuthenticationProvider连接到本地ldap

问题描述

我正在尝试通过ldap对某些用户进行身份验证,目前它只是本地ldap,来自官方文档https://spring.io/guides/gs/authenticating-ldap/中的一个。 事实是我正在尝试使用ActiveDirectoryLdapAuthenticationProvider连接到它,但是我真的不明白我必须给它提供什么参数。我的配置是这样的:

@Override
    @Bean
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return new ProviderManager(Arrays.asList(internalAdAuthenticationProvider()));

    }

    @Bean
    @RefreshScope
    public AuthenticationProvider internalAdAuthenticationProvider() {
        ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("springframework.org","ldap://localhost:8389","ou=groups,dc=springframework,dc=org" );
        provider.setConvertSubErrorCodesToExceptions(true);
        provider.setUseAuthenticationRequestCredentials(true);


        return provider;
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {


        auth.authenticationProvider(internalAdAuthenticationProvider());
        auth.eraseCredentials(false);

    }

在application.properties上,我有这个:

spring.ldap.embedded.port=8389
spring.ldap.embedded.ldif=classpath:test-server.ldif
spring.ldap.embedded.base-dn=dc=springframework,dc=org

每当我尝试请求验证用户身份时,都会收到此错误

Handling error: InvalidNameException,[LDAP: error code 34 - Unable to parse bind DN 'admin
@springframework.org':  Unable to parse string 'admin
@springframework.org' as a DN because it does not have an equal sign after RDN attribute 'admin
@springframework.org'.]; nested exception is javax.naming.InvalidNameException: [LDAP: error code 34 - Unable to parse bind DN 'admin
@springframework.org':  Unable to parse string 'admin
@springframework.org' as a DN because it does not have an equal sign after RDN attribute 'admin
@springframework.org'.]

此外,我还找到了一个看起来很有希望测试连接的docker容器: https://hub.docker.com/r/dwimberger/ldap-ad-it/ 我已经尝试过,但是我不明白我必须给ActiveDirectoryLdapAuthenticationProvider构造函数使用什么参数:(

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)