Я хочу список участников некоторыми 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
пример ?
Вы не можете искать CN только там, где ожидаются отличительные имена.
Чтобы достичь своей цели, вы должны сначала найти все группы, которые соответствуют вашим критериям:
$filter = "(&(CN=g_jira*))";
Как только вы получаете все группы, вы читаете их member
атрибут, возможно, uniquify список участников, чтобы у вас не было дубликатов, а затем запросите каждого из этих пользователей в отдельности, чтобы получить данные пользователей.
В качестве альтернативы (это может быть быстрее в зависимости от количества g_jira groups), вы ищете все группы, как описано выше, а затем выполняете поиск, как вы изначально предполагали, но для полного отличительного имени каждой группы. Затем вы объединяете возвращенные списки пользователей.
Других решений пока нет …