Как подключиться к внешнему/онлайн-серверу LDAP с помощью Spring Boot?

Я пытаюсь интегрировать вход на основе LDAP в свое приложение Spring Boot.

В качестве первого шага я пытаюсь использовать этот сервер 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

Может ли кто-нибудь предоставить рабочую конфигурацию для приложения Spring Boot с использованием сервера LDAP?


person Zeeshan Elahi    schedule 24.08.2017    source источник


Ответы (3)


Поскольку я получал этот код ошибки с сервера 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");
person Zeeshan Elahi    schedule 27.08.2017

Это правильная конфигурация:

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");
person regoug hicham    schedule 27.11.2018

Используйте нижеприведенное свойство приложения.

    ldap.enabled = true

####### LDAP TEST##############
ldap.urls= ldap://ldap.forumsys.com:389/
ldap.base.dn= dc=example,dc=com
ldap.username= cn=read-only-admin,dc=example,dc=com
ldap.password= password
ldap.user.dn.pattern = uid={0}
person Himadri Mandal    schedule 04.01.2018