Spring security 如何深入LDAP树以找到可以在SpringLDAP安全中进行身份验证的用户

Spring security 如何深入LDAP树以找到可以在SpringLDAP安全中进行身份验证的用户,spring-security,active-directory,ldap,spring-ldap,spring-security-ldap,Spring Security,Active Directory,Ldap,Spring Ldap,Spring Security Ldap,我想使用spring安全ldap身份验证。但是,我希望递归地遍历ldap树。不幸的是,我只能找到一个级别或深度的用户 例如,我的用户树如下所示: ouUsers:有用户(user1、user2等)和子树(ouGenel、ouYatay) 子树有子树和用户 我希望递归遍历ldap树,以便在spring安全项目中进行身份验证 我的spring验证代码如下,我应该在代码中更改什么 @Override public void configure(AuthenticationManagerBuilder

我想使用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
    尝试通过在提供的模式中替换用户登录名,并从LDAP url中附加基数来匹配DN

    如果所有用户都存储在 目录

  • 另一方面,
    userSearchFilter()
    可用于匹配常规请求中的登录名,在特定基础下搜索树(默认搜索范围=
    子树
    userSearchBase()
    可以选择性地用于设置用户条目所在的分支rdn,并从中执行搜索。如果未指定,搜索将包括从LDAP url的基本dn开始的整个目录

将userDnPatterns()替换为以下内容应该可以:

.userSearchBase('ou=ouUsers')
.userSearchFilter('(cn={0})')

您需要使用
userSearchFilter()
userSearchBase()
而不是
userDnPatterns()

  • userDnPatterns
    尝试通过在提供的模式中替换用户登录名,并从LDAP url中附加基数来匹配DN

    如果所有用户都存储在 目录

  • 另一方面,
    userSearchFilter()
    可用于匹配常规请求中的登录名,在特定基础下搜索树(默认搜索范围=
    子树
    userSearchBase()
    可以选择性地用于设置用户条目所在的分支rdn,并从中执行搜索。如果未指定,搜索将包括从LDAP url的基本dn开始的整个目录

将userDnPatterns()替换为以下内容应该可以:

.userSearchBase('ou=ouUsers')
.userSearchFilter('(cn={0})')