You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询LDAP目录树中处于不同层级的两组用户?

解决LDAP查询特定OU下用户的问题

首先得指出你用的过滤器有问题——LDAP里不能直接把OU路径当作独立属性条件来写,因为OU=是用户distinguishedName(DN,即区分名)的一部分,并非单独的属性字段。咱们一步步把查询改对:

正确的查询逻辑

你要找的是位于两个指定OU下的用户,搜索基设为OU=Groups,DC=mycompany,DC=com,那过滤器需要匹配用户的DN是否包含目标OU的完整路径。

正确的过滤器写法

用distinguishedName属性结合通配符和逻辑或来构造:

(|(distinguishedName=*,OU=IT Dept,OU=Groups,DC=mycompany,DC=com)(distinguishedName=*,OU=XYZ Corp,OU=Temp Accounts,OU=Groups,DC=mycompany,DC=com))

简单解释:

  • distinguishedName=*,OU=XXX:表示匹配所有DN以,OU=XXX,...结尾的对象,也就是该OU及其下级容器里的所有用户(或其他对象)
  • (|...):逻辑或运算符,只要满足其中一个条件的对象就会被返回

额外优化建议

  • 如果只想返回用户对象(避免返回组、计算机等其他类型对象),可以在过滤器里加上对象类条件:
    (&(objectClass=user)(|(distinguishedName=*,OU=IT Dept,OU=Groups,DC=mycompany,DC=com)(distinguishedName=*,OU=XYZ Corp,OU=Temp Accounts,OU=Groups,DC=mycompany,DC=com)))
    
  • 确认搜索范围:把搜索范围设为子树(Subtree),这样才会遍历OU=Groups下的所有层级子OU。如果设为“一级(One Level)”,只会搜索Groups OU直接下属的对象,不会深入到IT Dept或Temp Accounts这些子OU中。

为什么原过滤器无效?

LDAP过滤器的格式是(属性名=属性值),你写的(OU=IT Dept)相当于在找属性名为OU、值为IT Dept的对象,但实际上不存在单独的OU属性——OU是DN的组成部分,并非独立属性,所以这个条件永远匹配不到任何对象。

内容的提问来源于stack exchange,提问作者Mike Thomsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:14:23