如何深入LDAP树查找可以在Spring LDAP Security中进行身份验证的用户

2023-12-10

我想使用 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(使用前将#替换为@)

如何深入LDAP树查找可以在Spring LDAP Security中进行身份验证的用户 的相关文章

随机推荐