我想使用 Spring Security LDAP 身份验证。不过我想递归地遍历 ldap 树。不幸的是,我只能找到一个级别或深度的用户。
例如,我的用户树如下所示:
ouUsers:有用户(user1、user2 等)和子树(ouGenel、ouYatay)。
子树有子树和用户。
我想递归地遍历 ldap 树以在 Spring Security 项目中进行身份验证。
我的 spring 身份验证代码如下,我应该在代码中更改什么? :
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("CN={0},OU=ouUsers")
.groupSearchBase("ou=ouUsers")
.contextSource()
.url(url+"/"+base)
.managerDn(dn)
.managerPassword(password)
.and()
.passwordCompare()
.passwordEncoder(new LdapShaPasswordEncoder())
.passwordAttribute("sn");
}
谢谢
你需要使用userSearchFilter()
and userSearchBase()
代替userDnPatterns()
.
-
userDnPatterns
尝试通过替换提供的模式中的用户登录名并附加 LDAP url 中的基数来匹配 DN。
如果您的所有用户都已存储,这没问题单个节点下在里面
目录。
userSearchFilter()
另一方面可用于匹配常规请求中的登录名,沿树向下搜索(默认 SearchScope =SUBTREE
)在一定的基数下。userSearchBase()
可以选择用于设置用户条目所在的分支 rdn 并从中执行搜索。如果未指定,搜索将包括从 LDAP url 的基本 dn 开始的整个目录。
将 userDnPatterns() 替换为以下内容应该没问题:
.userSearchBase('ou=ouUsers')
.userSearchFilter('(cn={0})')
https://docs.spring.io/spring-security/site/docs/3.0.x/reference/ldap.html#d0e5940
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)