Я использую Spring Security с AD-сервером для аутентификации. Моя проблема в том, что некоторые пользователи не имеют userPrincipalName. Поэтому я хотел изменить аутентификацию и аутентификацию с sAMAccountName и паролем. Я изменил свой поисковый фильтр, и мой ActiveDirectoryLdapAuthenticationProvider действительно находит пользователя, но затем использует данное имя sAMAccountName от имени входа в качестве userPrincipalName для аутентификации, а затем аутентификация завершается неудачей. Вот мой код:
public ActiveDirectoryLdapAuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider activeDirectoryLdapAuthenticationProvider = new ActiveDirectoryLdapAuthenticationProvider(
"test.test-company.com", "ldap://10.0.0.1:389", "DC=test,DC=test-company,DC=com");
activeDirectoryLdapAuthenticationProvider.setConvertSubErrorCodesToExceptions(true);
activeDirectoryLdapAuthenticationProvider.setSearchFilter(
"(&(objectClass=user)(sAMAccountName={1})(memberOf=CN=Test-Group,OU=Groups,OU=Users Test,DC=test,DC=test-company,DC=com))");
activeDirectoryLdapAuthenticationProvider.setUseAuthenticationRequestCredentials(true);
return activeDirectoryLdapAuthenticationProvider;
}
PS: пользователи, имеющие userPrincipalName, могут проходить аутентификацию.