不使用经理属性的直接报告的 LDAP 过滤器

LDAP Filter for directReports whithout using manager attribute

我需要使用 LDAP 过滤器从 Active Directory 中获取 2 个单独的结果。

所有直接向经理报告的人:

(&(manager=CN=XXXX,OU=IT,OU=STAFF,OU=XYZ,DC=ad,DC=xxxcom))

另一个列表是同一经理的递归 directReports:

(&(manager:1.2.840.113556.1.4.1941:=CN=XXXX,OU=IT,OU=STAFF,OU=XYZ,DC=ad,DC=xxxcom))

这两个 return 正是我们所需要的。 但是,如果我可以避免在过滤器中使用特定的人,而是将过滤器基于另一个属性,那就太好了,例如:

(&(department="IT")(jobDesc="Senior Director"))

我们目前正在使用 PHP 完成此操作,但我们需要切换到使用仅采用过滤器的应用程序。此应用程序不允许 $result= 然后将 $result 放入过滤器而不是经理的 CN。

谢谢。

那是不可能的。您不能在另一个查询中使用一个查询的结果并在一个查询中执行所有操作。

如果你要找 IT 部门的每个人,你能不能只找 (department=IT)

顺便说一下,您确实应该在搜索中至少包含一个索引属性。 departmentmanager 属性未编入索引,因此 AD 必须查看 所有对象 才能找到匹配项,您可能会得到不需要的匹配项。例如,计算机对象也有一个 department 属性。此查询:

(&(objectClass=user)(objectCategory=person)(department=IT))

将您的结果限制为仅用户帐户。如果要包括联系人对象,可以省略 (objectclass=user).