gpt4 book ai didi

spring - 在配置中自定义 LdapAuthoritiesPopulator

转载 作者:行者123 更新时间:2023-12-03 20:19:13 25 4
gpt4 key购买 nike

DefaultLdapAuthoritiesPopulator 将搜索范围设置为“ONE_LEVEL”,但我需要搜索“SUBSCOPE”以获取用户所属的组列表。

我一直在遵循“配置”风格的 Spring 设置(代码,而不是 XML)。虽然有大量关于如何在 XML 中配置自定义 LdapAuthoritiesPopulator 的示例,但我对如何在代码中执行此操作感到困惑。

这是我到目前为止所拥有的:

@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 不提供配置它的方法。

有什么建议么?

最佳答案

解决方法是在 LdapAuthoritiesPopulator 中设置这个属性,然后传给 LdapAuthenticationProvider

引用示例 1:https://www.programcreek.com/java-api-examples/?api=org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator

@ bean
公共(public) LdapAuthoritiesPopulator 当局Populator(){

    DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator(
contextSource(),
groupSearchBase);

populator.setGroupSearchFilter("(uniqueMember={0})");
populator.setGroupRoleAttribute("cn");
**populator.setSearchSubtree(true);**
populator.setRolePrefix("");

return populator;
}

关于spring - 在配置中自定义 LdapAuthoritiesPopulator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com