LDAP 活动目录 PHP 过滤器


ldap active directory PHP filter

我想要一些CN列出成员

我是 usign 过滤器,它的工作:

    $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示例中?

不能仅在需要可分辨名称的位置搜索 CN。

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

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

获取所有组后,读取其member属性,也许将成员列表统一化,以便没有重复项,然后单独查询每个用户以获取用户的数据。

或者(根据g_jira组的数量,这可能会更快),您可以如上所述搜索所有组,然后按原始预期执行搜索,但针对每个组的完整可分辨名称。然后,合并返回的用户列表。