我希望列表成员按某些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
中的结果例子?
答案 0 :(得分:2)
只有在需要专有名称的地方才能搜索CN。
要实现目标,您必须先找到符合条件的所有群组:
$filter = "(&(CN=g_jira*))";
获得所有组后,您可以阅读他们的member
属性,或者可以统一成员列表,这样您就不会有重复项,然后分别查询每个用户以获取用户的数据。
或者(这可能会更快,具体取决于 g_jira 组的数量),您可以按照上面的说明搜索所有组,然后按照您的预期执行搜索,但是对于每个组的完整专有名称。然后,合并返回的用户列表。