Как найти пользователей в определенной группе с помощью поиска по LDAP?

Как можно настроить фильтрацию пользователей по группе в приложении на PHP, которое подключается к Active Directory через LDAP? При создании группы "MyTest" и добавлении в неё двух пользователей, они успешно находятся по ФИО, но не по группе. Мы пробовали фильтры типа "(&(|(sAMAccountName=*$str*)(givenName=*$str*)(sn=*$str*)(middlename=*$str*))(memberOf=CN=MyTest))" и "(memberOf=CN=MyTest,OU=Domain_users,DС=abt,DС=orl)", однако они не работают.
  • 14 декабря 2023 г. 9:07
Ответы на вопрос 1
Для поиска пользователей в определенной группе с помощью LDAP, вы можете использовать фильтр "(memberOf=CN=MyTest,OU=Domain_users,DC=abt,DC=orl)". 

В приведенном фильтре "memberOf" указывает на членство пользователя в определенной группе. "CN=MyTest" - это полное имя группы, "OU=Domain_users" - это организационная единица (OU), в которой находится группа, "DC=abt,DC=orl" - это доменный компонент (DC), соответствующий вашему активному каталогу. 

В приложении на PHP, которое подключается к Active Directory через LDAP, вы можете использовать функцию ldap_search() для выполнения поиска пользователей по фильтру группы. 

Пример кода на PHP для поиска пользователей в группе "MyTest":

```php
<?php
$ldap_server = "ldap://your_ldap_server_address";
$ldap_user = "your_ldap_username";
$ldap_pass = "your_ldap_password";
$ldap_base_dn = "OU=Domain_users,DC=abt,DC=orl";

$ldap_conn = ldap_connect($ldap_server);
ldap_bind($ldap_conn, $ldap_user, $ldap_pass);

$group_name = "MyTest";
$filter = "(memberOf=CN=" . $group_name . "," . $ldap_base_dn . ")";
$attributes = array("givenName", "sn", "mail");

$search_result = ldap_search($ldap_conn, $ldap_base_dn, $filter, $attributes);
$info = ldap_get_entries($ldap_conn, $search_result);

// Обработка результатов поиска
foreach ($info as $user) {
    echo "Имя: " . $user["givenName"][0] . "<br/>";
    echo "Фамилия: " . $user["sn"][0] . "<br/>";
    echo "E-mail: " . $user["mail"][0] . "<br/>";
    echo "<hr/>";
}

ldap_close($ldap_conn);
?>
```

При выполнении этого кода будут найдены пользователи, являющиеся членами группы "MyTest", и выведена информация о них (имя, фамилия, e-mail). Убедитесь, что заменили "your_ldap_server_address", "your_ldap_username" и "your_ldap_password" на соответствующие значения для вашей конфигурации LDAP.
Похожие вопросы