我已经使用Active Directory设置了身份验证,如下所示:
AuthenticationProvider activeDirectoryAuthenticationProvider(UserDetailsContextMapper userDetailsContextMapper) {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(
"company.local",
"ldap://active-directory-dc:389");
provider.setConvertSubErrorCodesToExceptions(true);
provider.setUserDetailsContextMapper(userDetailsContextMapper);
return provider;
我想使用SwitchUserFilter
进行用户模仿。但是,我只能看到方法SwitchUserFilter#setUserDetailsService
来设置身份验证对象,并且无法将AuthenticationProvider
传递给过滤器。或者,我不知道是否(以及如何)使用UserDetailsService
进行Active Directory身份验证。
我通过实现自己的UserDetailsService
解决了这个问题,LdapUserDetailsService
在LDAP中搜索用户名。或者,可以使用qazxswpoi(如果您不需要大量定制)。