ldap活动目录PHP过滤器

时间:2014-12-08 08:59:51

标签: php active-directory ldap ldap-query

我希望列表成员按某些CN

我使用过滤器,它起作用:

    $filter="(&(objectCategory=user)(sAMAccountName=username)(memberOf=CN=g_jira,OU=Jira,OU=Groups,DC=office,DC=lamoda,DC=ru))";
    $result = ldap_search($ldap,"DC=office,DC=example,DC=ru",$filter);
    ldap_sort($ldap,$result,"sn");
    $info = ldap_get_entries($ldap, $result);
    var_dump($info);

当我尝试仅CN搜索用户时,它对我不起作用。

    $filter="(&(objectCategory=user)(sAMAccountName=username)(memberOf=CN=g_jira*))";
    $result = ldap_search($ldap,"DC=office,DC=example,DC=ru",$filter);
    ldap_sort($ldap,$result,"sn");
    $info = ldap_get_entries($ldap, $result);
    var_dump($info);

2示例中我得到count = 0,我的示例是什么,如何在过滤器中仅提供CN并获得1中的结果例子?

1 个答案:

答案 0 :(得分:2)

只有在需要专有名称的地方才能搜索CN。

要实现目标,您必须先找到符合条件的所有群组:

$filter = "(&(CN=g_jira*))";

获得所有组后,您可以阅读他们的member属性,或者可以统一成员列表,这样您就不会有重复项,然后分别查询每个用户以获取用户的数据。

或者(这可能会更快,具体取决于 g_jira 组的数量),您可以按照上面的说明搜索所有组,然后按照您的预期执行搜索,但是对于每个组的完整专有名称。然后,合并返回的用户列表。