ldap активный каталог PHP фильтр

Я хочу список участников некоторыми 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

Решение

Вы не можете искать CN только там, где ожидаются отличительные имена.

Чтобы достичь своей цели, вы должны сначала найти все группы, которые соответствуют вашим критериям:


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

Как только вы получаете все группы, вы читаете их member атрибут, возможно, uniquify список участников, чтобы у вас не было дубликатов, а затем запросите каждого из этих пользователей в отдельности, чтобы получить данные пользователей.

В качестве альтернативы (это может быть быстрее в зависимости от количества g_jira groups), вы ищете все группы, как описано выше, а затем выполняете поиск, как вы изначально предполагали, но для полного отличительного имени каждой группы. Затем вы объединяете возвращенные списки пользователей.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]