如何使用Spring Boot连接外部/在线LDAP服务器?

时间:2017-08-24 17:31:44

标签: spring-boot spring-security ldap spring-security-ldap

我正在尝试在我的Spring Boot应用程序中集成基于LDAP的登录。

作为初始步骤,我正在尝试使用此LDAP服务器(http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/)。

但是,我无法成功连接服务器并收到此错误。

nested exception is javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]

我在配置类中使用此信息。

authenticationManagerBuilder.ldapAuthentication()
            .contextSource().url("ldap://ldap.forumsys.com:389/dc=example,dc=com")
            .managerDn("cn=read-only-admin,dc=example,dc=com").managerPassword("password")
            .and()
            .userSearchBase("ou=mathematicians")
            .groupSearchBase("ou=mathematicians")
            .userSearchFilter("(cn={0})");

这是我这个项目的application.properties文件。

spring.ldap.urls=ldap.forumsys.com:389
spring.ldap.base=cn=read-only-admin,dc=example,dc=com
spring.ldap.password=password

任何人都可以使用LDAP服务器为Spring Boot应用程序提供工作配置吗?

3 个答案:

答案 0 :(得分:1)

我从LDAP服务器获取此错误代码。

LDAP: error code 49 - Invalid Credentials

问题在于我发送到LDAP服务器以打开通信渠道的信息。因此,当我将请求更改为其他对象时,它开始工作。

以下是我们需要从Spring发送到LDAP服务器的正确请求。

authenticationManagerBuilder
                .ldapAuthentication()
                .userDetailsContextMapper(inetOrgPersonContextMapper())
                .userSearchFilter("(uid={0})")
                .userSearchBase("dc=example,dc=com")
                .groupSearchBase("ou=mathematicians,dc=example,dc=com")
                .groupSearchFilter("cn={0}")
                .contextSource()
                .url("ldap://ldap.forumsys.com")
                .port(389)
                .managerDn("cn=read-only-admin,dc=example,dc=com")
                .managerPassword("password");

答案 1 :(得分:0)

使用以下应用程序属性。

if(str != null && !str.isEmpty()) {

答案 2 :(得分:0)

这是正确的配置:

authenticationManagerBuilder
             .ldapAuthentication()
             .userSearchFilter("(uid={0})")
             .userSearchBase("dc=example,dc=com")
             .groupSearchFilter("uniqueMember={0}")
             .groupSearchBase("ou=mathematicians,dc=example,dc=com")
             .userDnPatterns("uid={0}")
             .contextSource()
             .url("ldap://ldap.forumsys.com:389")
             .managerDn("cn=read-only-admin,dc=example,dc=com")
             .managerPassword("password");