如何深入 LDAP 树以找到可以在 spring ldap 安全中进行身份验证的用户
How to deep into the LDAP tree to find a user who can authenticate in spring ldap security
我想使用 spring 安全 ldap 身份验证。但是我想递归遍历 ldap 树。不幸的是,我只能找到一个用户级别或深度。
例如,我的用户树如下:
ouUsers:有用户(user1、user2 等)和子树(ouGenel、ouYatay)。
而子树有子树和用户。
我想递归遍历 ldap 树以在 spring 安全项目中进行身份验证。
我的 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()
和 userSearchBase()
而不是 userDnPatterns()
。
userDnPatterns
尝试通过在提供的模式中替换用户登录名来匹配 DN,并附加来自 LDAP url 的基础。
This is OK if all your users are stored under a single node in the
directory.
另一方面,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
我想使用 spring 安全 ldap 身份验证。但是我想递归遍历 ldap 树。不幸的是,我只能找到一个用户级别或深度。
例如,我的用户树如下:
ouUsers:有用户(user1、user2 等)和子树(ouGenel、ouYatay)。
而子树有子树和用户。
我想递归遍历 ldap 树以在 spring 安全项目中进行身份验证。
我的 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()
和 userSearchBase()
而不是 userDnPatterns()
。
userDnPatterns
尝试通过在提供的模式中替换用户登录名来匹配 DN,并附加来自 LDAP url 的基础。This is OK if all your users are stored under a single node in the directory.
另一方面,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