【问题标题】:LDAP exclude sub OU from searchLDAP 从搜索中排除子 OU
【发布时间】:2012-03-09 10:22:06
【问题描述】:

假设我有如下结构:

如何排除 A 和 B2?

_users
|__A
|__B
   |__B1
   |__B2
   |__B3
|__C
|__D

ou=users, dc=domain, dc=co, dc=uk;

【问题讨论】:

标签: active-directory ldap ldap-query


【解决方案1】:

LDAP 搜索由 4 个元素组成:

  1. 您要求开始搜索的节点(节点的可分辨名称)
  2. 搜索范围(基础、单级、子树)
  3. 您的搜索过滤器(例如(objectClass=user))
  4. 您要检索的属性。

在 Active Directory 中,不存在从递归搜索中排除 OU 的“自然”方式。

关于 LDAP,从理论上讲,ExtensibleMatch 存在并启用您想要做的事情,但它在 Active Directory 中是 not supported。

【讨论】:

    【解决方案2】:

    我正在做类似的事情。我首先使用搜索范围设置为“OneLevel”的“objectclass=organizationalunit”进行搜索。代码如下所示:

    DirectoryEntry oDE = new DirectoryEntry("LDAP://DC=ChildDomain,DC=RootDomain")
            using (DirectorySearcher ds = new DirectorySearcher(oDE))
            {
                ds.PropertiesToLoad.Add("dn");
                ds.SearchScope = SearchScope.OneLevel;
                ds.Filter = "(objectClass=OrganizationalUnit)";
                ds.PageSize = 30;
    

    然后我使用 foreach 循环遍历结果并将每个结果的专有名称与我排除的一个 OU 进行比较。如果 OU 的 dn 匹配,我继续下一个结果。如果没有,那么我会采取一些措施。

    【讨论】:

    • 做类似的事情?一般来说,答案应该是独立的,引用和链接到他们使用的任何其他答案或外部资源。
    【解决方案3】:

    对我来说,我需要从 ldap 搜索结果或任何其他会显示这些用户帐户以及启用(活动)帐户的任何其他内容中轻松排除禁用用户。我拒绝了 Disabled Users OU 的列表内容访问权限,这使 OU 可见,但内容不可见。结果是人们使用联系人应用从绑定的 Mac 客户端搜索将不再看到“幽灵”用户。

    【讨论】:

      【解决方案4】:

      由于目录服务器不兼容(如 JP 所述,AD 不支持可扩展的匹配过滤器 因此不合规),如果存在具有将条目标识为的值的属性 属于A 和B2,排除那些有搜索过滤器的。例如,如果条目 从属于A 有一个objectClass 值为in-A,您的过滤器可以排除那些 由基础对象ou=users, dc=domain, dc=co, dc=uk、范围whole subtree组成的搜索, 过滤(!(objectClass=in-A)),以及您想要的属性列表。类似的过滤器可以是 构造为同时排除来自A 和B2 的条目。

      有关搜索和搜索过滤器的更多信息,请参阅LDAP: Mastering Search Filters。

      【讨论】:

        【解决方案5】:

        唯一的方法是仅在 wanted 或 not-wanted OU 上设置特殊属性。您可以将pagerattribute 用于用户,或将physicalLocationObject 用于计算机,因为它们很少使用并且通常可以被“滥用”来管理此类问题(不要忘记确认它们确实没有使用或不是!!)。然后,您可以搜索过滤这些属性以排除那些 OU,例如:(&(objectclass=user)(!(pager=*)))

        当然,这是低效的,正确的解决方案是重新排序 LDAP/AD 结构以适应需要。

        【讨论】:

          【解决方案6】:

          我可能过度简化了这一点,但您不能也拒绝对您想从查询中排除的 OU 的列表/读取访问权限吗?假设您使用特定的服务帐户来执行查找,这应该可以工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多