java - 基于 LDAP Active Directory 组搜索,未向下钻取以包含多个 OU

标签 java spring-security ldap spring-ldap

我正在尝试在我的 Java 应用程序中检索身份验证用户的所有 AD 组,其中这些组来自两个不同的组织单位。到目前为止,我只能使用 Spring Security 检索一组组或另一组组,并设置搜索库:

OU=RoleGroups,OU=UEU,OU=rEU,DC=ah1,DC=ad,DC=megacorp,DC=com

OU=RoleGroups,OU=MOR,OU=rEU,DC=ah1,DC=ad,DC=megacorp,DC=com

当我将它们与简单的搜索过滤器一起使用时,它们仅返回结果:

(member=CN=Adam,OU=Users,DC=ah1,DC=ad,DC=megacorp,DC=com)

带有 spring-security-ldap 库的 Spring Security 只允许我进行一次查询,否则我将不得不开始覆盖第 3 方库类才能进行第二次调用。

我只是想弄清楚我是否可以应用这两个问题中的任何内容:

LDAP root query syntax to search more than one specific OU

Spring LDAP authentication with multiple user OU and multiple access CNs

但我仍然找不到解决方案。据我所知,通过将所有内容更改为组而不是用户,我应该执行以下操作:

Use port 3268 instead of 389

Use search base DC=ah1,DC=ad,DC=megacorp,DC=com

Use search filter (&(objectCategory=RoleGroup)(objectclass=group)(member={0}))

这应该将我的查询作为“全局目录搜索”运行。我无法让它工作 - 没有返回结果 - 我的搜索库从空到零长度字符串到上面的任何变化,并希望智能地改变我的搜索过滤器。

还有一种 AD 全局目录搜索技术,使用某种对 userAccountControl 等的数字引用,但深入研究 Microsoft AD 是否存在类似的“groupControl”属性还不清楚.

我看到一个名为 RoleGroups 的组织单位,这是 Active Directory,但我不知道是否应该在我的搜索过滤器中引用它,如下所示:

&(objectClass=group)(member={0}))

&(objectCategory=RoleGroup)(objectclass=group)(member={0}))

我有objectClassobjectclassobjectCategoryobjectcategory,除了反复试验之外什么也没有。 - 到目前为止,这都是错误。

当我尝试使用简单的过滤器从 DC=megacorp,DC=com 搜索库进行搜索时,完全没有返回的组,这让我怀疑我可能配置了错误。但那是什么我不知道。我已经设置了可用的 Spring 配置属性,例如 searchSubtree=truederefLink=true

最佳答案

成员属性具有 DN 语法,因此它期望整个用户的 DN 而不仅仅是 CN 来匹配组中的成员。

关于java - 基于 LDAP Active Directory 组搜索,未向下钻取以包含多个 OU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55128252/

相关文章:

java - 编译时收到错误消息(Java Web 项目)

java - Spring 拦截 url 配置中的 ROLE_USER 和 ROLE_ANONYMOUS 有什么区别?

grails - Grails Spring Security必填字段

encoding - 如何使用 BER 编码对象 System.DirectoryServices.Protocols.BerConverter.Encode ("???", myData)

java - 同时使用 Neo4j 和 Ontotext GraphDB 的 GraphQL

java - 如何转换富:calender date to mysql Date

excel - 从文本中解析子字符串

c - 如何导致 ldap_simple_bind_s 超时?

java - 具有多个字符串的 ListView

在 header 中找不到 Spring Boot 安全性 x-auth-token