Аутентификация с помощью Spring-Security через Active Directory LDAP - PullRequest
0 голосов
/ 19 октября 2019

Я не могу аутентифицироваться, используя настоящий активный каталог, позвольте мне объяснить лучше, я попытался аутентифицироваться, используя пример, предложенный spring.io без проблем, где внутренняя служба запускается без проблем. ссылка https://spring.io/guides/gs/authenticating-ldap/

Я попытался изменить приведенный ниже код, вставив конфигурацию моего активного каталога, но безуспешно. Не могли бы вы помочь мне или показать реальный случай, когда установлено истинное соединение без использования внутренних служб, подобных тем, что приведены в примерах? Я посмотрел в сети, но нашел все, что похоже на официальный пример, без каких-либо реальных случаев

@Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .ldapAuthentication()
                .userDnPatterns("uid={0},ou=people")
                .groupSearchBase("ou=groups")
                .contextSource()
                    .url("ldap://localhost:8389/dc=springframework,dc=org")
                    .and()
                .passwordCompare()
                    .passwordEncoder(new LdapShaPasswordEncoder())
                    .passwordAttribute("userPassword");
    }

Ошибка отображения: исключение без категории при обработке LDAP;вложенное исключение: javax.naming.NamingException: [LDAP: код ошибки 1 - 000004DC: LdapErr: DSID-0C0907C2, комментарий: для выполнения этой операции необходимо выполнить успешное связывание для соединения., данные 0, v2580

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Да, аутентификация через LDAP это слишком болезненно. Чтобы иметь возможность выполнять аутентификацию в AD, вам необходимо использовать ActiveDirectoryLdapAuthenticationProvider . Вот рабочий пример:

@Override
protected void configure(AuthenticationManagerBuilder auth) {
    ActiveDirectoryLdapAuthenticationProvider adProvider =
            new ActiveDirectoryLdapAuthenticationProvider("domain.com", "ldap://localhost:8389");
    adProvider.setConvertSubErrorCodesToExceptions(true);
    adProvider.setUseAuthenticationRequestCredentials(true);
    auth.authenticationProvider(adProvider);
}

И чтобы сэкономить свое время, просто прочитайте следующее, это действительно важно: Документ аутентификации AD

0 голосов
/ 26 октября 2019

Решением является пост Ярослава Киряка

...