如何在LDAP中搜索支持部分DN或OU匹配的员工?
解决LDAP查询包含特定OU和DC的用户问题
我看你遇到的问题核心是误用了ou属性来匹配DN中的OU组件,而不是针对完整的distinguishedName(也就是DN)进行匹配。下面是具体的解决方案:
正确的搜索配置
1. 搜索DN保留为 DC=ad,DC=companyName,DC=net
这个搜索范围可以覆盖所有属于该域及其子域的对象,包括那些带有额外DC或OU的用户,避免遗漏。
2. 使用正确的LDAP过滤器
替换你之前的过滤器为:
(& (objectClass=user) (givenName=Name*) (distinguishedName=*,OU=Personal,*) (distinguishedName=*,DC=ad,DC=companyName,DC=net) )
为什么这个过滤器有效?
(distinguishedName=*,OU=Personal,*):匹配**整个DN中任意位置包含OU=Personal**的对象,*可以匹配DN中该组件前后的任意字符(包括其他OU/CN/DC组件)。(distinguishedName=*,DC=ad,DC=companyName,DC=net):确保DN中包含连续的DC=ad,DC=companyName,DC=net后缀,允许前面有额外的DC(比如你示例中的DC=additionalDc)。- 剩下的
objectClass=user和givenName=Name*保持你原来的需求,过滤用户对象和名字以Name开头的用户。
你之前的配置为什么失败?
- 用
(ou=Personal)时,这个条件匹配的是用户对象的ou属性——而这个属性只存储用户直接上级OU的名称。如果用户的父容器是OU=Hawaii(而OU=Hawaii在OU=Personal下面),那么用户的ou属性是Hawaii,自然匹配不到。 - 把搜索DN设为
OU=Personal,DC=ad,...时,只会搜索这个OU及其子节点下的对象,那些OU=Personal嵌套在其他OU里的用户会被排除在外。
内容的提问来源于stack exchange,提问作者DrFloyd5
相关产品推荐
相关产品推荐

