如何按用户名和域查询LDAP,修复AD全局编录多子域用户查询语句
查询失败核心原因
你编写的LDAP查询过滤器存在逻辑错误:dc=sub,dc=domain,dc=com是子域的可分辨名称(DN)片段,属于**搜索基准路径(Base DN)**的配置参数,并非用户对象的内置属性,直接写在过滤器中无法匹配到任何用户对象,自然返回空结果。
正确查询配置
使用全局编录查询时,首先确认基础配置:
- 全局编录服务端口默认使用
3268(非SSL)或3269(SSL),不要使用普通域查询的389/636端口 - 搜索范围设置为
子树(subtree)
场景1:查询子域下所有用户
按如下参数配置即可:
- 搜索Base DN填写:
dc=sub,dc=domain,dc=com - 查询过滤器写为:
(& (objectCategory=person)(objectClass=user))
补充说明:同时匹配objectCategory和objectClass是为了过滤掉同属于person类的联系人对象,避免返回非用户的冗余结果
场景2:查询子域下指定账号(如示例中的Administrator)
按如下参数配置即可:
- 搜索Base DN填写:
dc=sub,dc=domain,dc=com - 查询过滤器写为:
(& (objectCategory=person)(objectClass=user)(sAMAccountName=Administrator))
特殊兼容方案
如果你使用的工具无法灵活自定义Base DN,也可以将域限制规则直接写在过滤器中,但查询效率会低于指定Base DN的方案,仅推荐应急使用:
(& (objectCategory=person)(objectClass=user)(distinguishedName=*,dc=sub,dc=domain,dc=com)(sAMAccountName=Administrator))
内容的提问来源于stack exchange,提问作者Zakhar Kurasov
相关产品推荐
相关产品推荐

