搜索 AD 时更改 @domain 结尾
Change @domain ending when searching against AD
域
DC=red,DC=xyz
userPrincipalName: firstname.lastname@blue.com
公元
@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider ap =
new ActiveDirectoryLdapAuthenticationProvider(domain, url);
ap.setSearchFilter("(userPrincipalName={0})"); //change @ ending here?
ap.setConvertSubErrorCodesToExceptions(true);
ap.setUseAuthenticationRequestCredentials(true);
ap.setUserDetailsContextMapper(userDetailsContextMapper);
return ap;
}
此代码成功验证了 AD 并尝试使用 userPrincipalName: firstname@red.xyz
搜索树 DC=red,DC=xyz
搜索失败,因为@red.xyz 已过时,使用了@blue.com。如何在不更改域的情况下重新配置以 java 结尾的 @?
问题是 userPrincipalName 与 AD 用户名和域名不同。 ActiveDirectoryLdapAuthenticationProvider 默认添加搜索参数username@domain.
作为解决方案,我覆盖了 ActiveDirectoryLdapAuthenticationProvider 并将搜索过滤器更改为 sAMAccountName 并将值更改为不带域的普通用户名。
域
DC=red,DC=xyz
userPrincipalName: firstname.lastname@blue.com
公元
@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider ap =
new ActiveDirectoryLdapAuthenticationProvider(domain, url);
ap.setSearchFilter("(userPrincipalName={0})"); //change @ ending here?
ap.setConvertSubErrorCodesToExceptions(true);
ap.setUseAuthenticationRequestCredentials(true);
ap.setUserDetailsContextMapper(userDetailsContextMapper);
return ap;
}
此代码成功验证了 AD 并尝试使用 userPrincipalName: firstname@red.xyz
DC=red,DC=xyz
搜索失败,因为@red.xyz 已过时,使用了@blue.com。如何在不更改域的情况下重新配置以 java 结尾的 @?
问题是 userPrincipalName 与 AD 用户名和域名不同。 ActiveDirectoryLdapAuthenticationProvider 默认添加搜索参数username@domain.
作为解决方案,我覆盖了 ActiveDirectoryLdapAuthenticationProvider 并将搜索过滤器更改为 sAMAccountName 并将值更改为不带域的普通用户名。