Проблема Spring ActiveDirectoryLdapAuthenticationProvider - полученный пароль недействителен

Взгляните на конфигурацию, как показано ниже:

 ldap.urls=ldap://***.***.local:8389
    ldap.base.dn=dc=test,dc=com
    ldap.user.dn.pattern=(&(objectClass=user)(userPrincipalName = {0})(memberof=CN=Group Name,OU=***,OU=****,DC=test,DC=com))

WebSecurityConfig.java

 @Configuration
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

        private final static Logger log = LogManager.getLogger(WebSecurityConfig.class);

        @Value("${ldap.url}")
        private String ldapUrl;

        @Value("${ldap.base.dn}")
        private String ldapDomain;

        @Value("${ldap.user.dn.pattern}")
        private String ldapUserDnPattern;

        @Override
        protected void configure(HttpSecurity http) throws Exception {


            http.authorizeRequests().anyRequest().fullyAuthenticated().and().httpBasic();
        }

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

            ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider(
                    this.ldapDomain, this.ldapUrl);

            adProvider.setConvertSubErrorCodesToExceptions(true);
            adProvider.setUseAuthenticationRequestCredentials(true);

            // Checks with the Distinguished Name pattern provided
            if (this.ldapUserDnPattern != null && this.ldapUserDnPattern.trim().length() > 0) {
                adProvider.setSearchFilter(this.ldapUserDnPattern);
            }

            auth.authenticationProvider(adProvider);

        }

    }

Может кто-нибудь подскажет, как указать userDn и пароль при настройке с помощью ActiveDirectoryLdapAuthenticationProvider?

stackoverflow.com/a/21070619/6572971 может вам помочь.
Alien 21.08.2018 07:48

На самом деле я также использовал ту же конфигурацию, даже получив сообщение «Предоставленный пароль недействителен». Я настроил userDN с использованием шаблона с помощью setSearchFilter, как показано выше. Не могли бы вы помочь мне с этой ошибкой. Спасибо @Alien

Rajeswari Reddy 21.08.2018 08:02

ваше недостающее свойство ldap.base.dn = test.com.

TomB 27.08.2018 14:35

Где я скучаю, не могли бы вы помочь в этом. Спасибо @TomB

Rajeswari Reddy 27.08.2018 14:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
4
1 967
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

определите ldap.domain = test.com в своих свойствах.

 @Configuration
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

        private final static Logger log = LogManager.getLogger(WebSecurityConfig.class);

        @Value("${ldap.url}")
        private String ldapUrl;

        @Value("${ldap.base.dn}")
        private String ldapBaseDN;

        @Value("${ldap.domain}")
        private String ldapDomain;

        @Value("${ldap.user.dn.pattern}")
        private String ldapUserDnPattern;

        @Override
        protected void configure(HttpSecurity http) throws Exception {


            http.authorizeRequests().anyRequest().fullyAuthenticated().and().httpBasic();
        }

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

            ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider(
                    this.ldapDomain, this.ldapUrl, this.ldapBaseDN);

            adProvider.setConvertSubErrorCodesToExceptions(true);
            adProvider.setUseAuthenticationRequestCredentials(true);

            // Checks with the Distinguished Name pattern provided
            if (this.ldapUserDnPattern != null && this.ldapUserDnPattern.trim().length() > 0) {
                adProvider.setSearchFilter(this.ldapUserDnPattern);
            }

            auth.authenticationProvider(adProvider);

        }

    }

Ldap.domain и ldap.base.dn разные? если отличается, то какое значение необходимо передать для ldap.domain? благодаря. @TomB

Rajeswari Reddy 27.08.2018 14:49

ldap.domain = test.com

TomB 27.08.2018 14:53

ldap.base.dn = dc = test, dc = com

TomB 27.08.2018 14:54

ldap.domain необходим, потому что он добавляется к имени входа. Войдите как "пользователь" в очередь AD для "user @ domain". Это одно из различий между реализациями AD и LDAP в адаптерах Spring.

TomB 27.08.2018 14:55

Я добавляю домен к имени пользователя, например [email protected], во время тестирования. Даже получаю то же самое. Позвольте мне попробовать с приведенной выше конфигурацией. спасибо @TomB

Rajeswari Reddy 27.08.2018 14:59

Возможно, сначала оставьте (memberof = CN = Group Name, OU = ***, OU = ****, DC = test, DC = com) и добавьте его позже, когда вы подтвердите, что остальные работают нормально.

TomB 27.08.2018 15:01

Если я уйду (memberof = CN = Group Name, OU = ***, OU = ****, DC = test, DC = com), тогда AD как узнает имя группы. не могли бы вы объяснить мне, как я новичок в этом. Спасибо @TomB.

Rajeswari Reddy 27.08.2018 15:04

Без этого всем пользователям может быть разрешено войти в систему. Сначала проверьте, все ли работает нормально. Ваше ограничение позволяет входить в систему только пользователю из указанной группы.

TomB 27.08.2018 15:08

Позвольте нам продолжить обсуждение в чате.

Rajeswari Reddy 27.08.2018 15:30

Получение «ExceptionTranslationFilter - доступ запрещен (пользователь анонимен); перенаправление к точке входа аутентификации org.springframework.security.access.AccessDeniedException: доступ запрещен [DEBUG] 2018-08-28 12: 08: 33.070 [http-nio-36454 -exec-3] AntPathRequestMatcher - Запрос "POST / error" не соответствует "GET / ** при тестировании из SOAP. Пожалуйста, найдите здесь некоторые журналы. Спасибо. @TomB

Rajeswari Reddy 28.08.2018 12:22

Другие вопросы по теме