Как использовать / настроить аутентификацию провайдера с ldap - PullRequest
0 голосов
/ 25 января 2019

Я должен сделать аутентификацию на основе атрибута ldap "memberOf", который есть у пользователя.Из-за этого я пытаюсь использовать ActiveDirectoryLdapAuthenticationProvider.Проблема в том, что если я пытаюсь войти в систему с помощью uid, я получаю [LDAP: код ошибки 34 - недопустимое DN] .Когда я использую полное DN, например: cn = Test User, ou = users, dc = mycompany, dc = com Я постоянно получаю неверные учетные данные.

У меня нет проблем с использованием ldapAuthentication с такими настройками:

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

    auth
            .ldapAuthentication()
            .userSearchFilter("uid={0}")
            .groupSearchFilter("member={0})")
            .userDetailsContextMapper(userContextMapper())
            .contextSource()
            .url("ldap://ldap.mycompany.com:389/dc=mycompany,dc=com")
            .port(389);
}

Настройки, когда я пытаюсь использовать аутентификациюProvider:

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

    auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider());
}


@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
    ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(null, "ldap://ldap.mycompany.com:389", "dc=mycompany,dc=com");
    provider.setConvertSubErrorCodesToExceptions(true);
    provider.setUseAuthenticationRequestCredentials(true);
    return provider;
}
...