Я должен сделать аутентификацию на основе атрибута 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;
}