我正在使用带有AD服务器的Spring Security进行身份验证。我的问题是某些用户没有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的用户可以进行身份验证。