ActiveDirectory - LDAP 查询 objectCategory 出现意外结果

ActiveDirectory - LDAP 查询 objectCategory 出现意外结果

AD 处于 2003 功能级别,我们的一些 DC 运行的是 Windows Server 2003,一些是 2008,一些是 2008 R2。

使用以下查询时:

(objectCategory=user)

我不希望看到 objectCategory 属性等于“CN=Person,CN=Schema,CN=Configuration,DC=Contoso”的任何结果

我只期望 objectCategory 属性等于“CN=User,CN=Schema,CN=Configuration,DC=Contoso”的对象

但是,查询确实返回了 objectCategory 属性等于“CN=Person,CN=Schema,CN=Configuration,DC=Contoso”的所有对象

那么我的问题是:为什么我会看到这样的搜索结果?AD 会主动将包含的查询转换(objectCategory=user)(objectCategory=Person)吗?我查看了 Person 和 User 类的架构定义,但我看不出查询结果的任何原因。我知道 User 类是 organisationalPerson 类的子类,后者是 Person 的子类,但我看不到可以解释这种转换的属性值。

答案1

您之所以获得 person 对象,是因为没有 User 这样的类别。User 是一个类。严格来说,Objectcategory 具有 DN 属性。为了避免强迫程序员查找架构 DN,AD 中的查询引擎允许您提供一个类,并提供 defaultObjectCategory 作为扩展。因此,如果您也查找 User 的架构,您将获得以下 defaultobjectcategory:

CN=Person,CN=Schema,CN=Configuration,DC=jimbdom,DC=com

搜索用户的正确表达式是:“(&(objectClass=user)(objectCategory=person))”。

答案2

用户继承自 Person。换句话说,用户就是 Person。反之则​​不然。

因此,如果您搜索用户,您还可以看到人员。

科技网

在此处输入图片描述

相关内容