【问题标题】:PHP - LDAP Filter members of a groupPHP - 组的 LDAP 过滤器成员
【发布时间】:2022-01-14 05:18:07
【问题描述】:

我有一个连接到活动目录的 PHP 脚本。我可以成功检索组,但我需要帮助检索这些组的用户/成员。

下面的过滤器成功检索所有组名。如何编辑过滤器以检索这些组中的所有用户。

$base_dn = "OU=My Folder, OU=Special Groups, DC=test, DC=co, DC=za";

$filter = "(&(objectClass=group))";

【问题讨论】:

    标签: php filter active-directory ldap


    【解决方案1】:

    这并不像修改过滤器并一次获得它们那么简单。您将需要遍历查询结果,然后查询每个组的成员。有两种方法可以做到这一点(在循环内):

    1. 绑定到组对象并查看member 属性,该属性将为您提供每个成员的可分辨名称。
    2. 执行新查询以查找memberOf 属性包含组专有名称的用户。过滤器看起来像这样:
    (&(objectClass=user)(objectCategory=person)(memberOf={$groupDn}))
    

    如果您的林中有多个域,或者您有外部受信任域,则查看memberOf 可能无法找到所有成员。如果您不关心其他域上的用户,那么您总是可以的。但请注意。我在我写的一篇文章中有一个解释:Active Directory: What makes a member a member?。查看“提防 memberOf”子标题。

    【讨论】:

      【解决方案2】:

      如果您正在查询 Active Directory,您可以请求用户或组的 TokenGroup 属性以获取对象所属的组的完整列表。使用此方法有一些限制,返回值是组的 SID,您需要调用 LookupAccountSid 函数来获取组名称。 TokenGroup 属性是构造属性,仅在搜索范围为 BASE 时返回,带有 ONELEVEL 或 SUBTREE 的查询不会返回该属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多