Spring 在配置中自定义LdapAuthoritiesPopulator
DefaultLdapAuthoritiesPopulator将搜索范围设置为“一级”,但我需要搜索“子范围”,以获取用户所属组的列表 我一直遵循“配置”风格的Spring设置(代码,而不是XML)。虽然有很多关于如何在XML中配置自定义LdapAuthoritiesPopulator的示例,但我还是停留在代码中 以下是我目前掌握的情况:Spring 在配置中自定义LdapAuthoritiesPopulator,spring,spring-security,ldap,spring-security-ldap,Spring,Spring Security,Ldap,Spring Security Ldap,DefaultLdapAuthoritiesPopulator将搜索范围设置为“一级”,但我需要搜索“子范围”,以获取用户所属组的列表 我一直遵循“配置”风格的Spring设置(代码,而不是XML)。虽然有很多关于如何在XML中配置自定义LdapAuthoritiesPopulator的示例,但我还是停留在代码中 以下是我目前掌握的情况: @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAda
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.contextSource().url("ldap://ldap.company.org/")
.and()
.userSearchBase("o=company.org,c=us")
.userSearchFilter("(uid={0})")
.groupSearchBase("o=company.org,c=us")
.groupSearchFilter("(&(objectClass=groupOfUniqueNames)(uniqueMember={0}))");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin().and().authorizeRequests()
.antMatchers("/api/**").authenticated()
.anyRequest().permitAll();
}
}
缺少的是,我需要能够在DefaultLdapAuthoritiesPopulator上设置搜索范围。该类本身公开了一个“setSearchSubtree”方法,但LdapAuthenticationProviderConfigurer没有提供配置该方法的方法
有什么建议吗?您需要添加以下内容:
final SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
在您开始搜索之前,请先执行以下操作。
为什么它被称为“控件”是我(LDAP的人)无法理解的,但Spring就是这么做的
-jim解决方案是在LdapAuthoritiesPopulator中设置此属性,并将其传递给LdapAuthenticationProvider 请参阅中的示例1: @豆子 公共LdapAuthoritiesPopulator authoritiesPopulator(){
我遇到了与OP相同的问题,但您的回答没有帮助。我们应该如何将SearchControl一直传递到这些配置生成器?您找到解决方案了吗?示例不完整,因为OP使用生成器变量进行配置,不允许访问
contextSource()
。
DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator(
contextSource(),
groupSearchBase);
populator.setGroupSearchFilter("(uniqueMember={0})");
populator.setGroupRoleAttribute("cn");
**populator.setSearchSubtree(true);**
populator.setRolePrefix("");
return populator;
}