Мне нужно выбрать несколько атрибутов для всех пользователей в определенной группе из приложения PHP. Я понимаю, что я могу запросить атрибут 'member' группы, чтобы получить dn каждого члена, а затем сделать отдельный запрос LDAP для атрибутов каждого члена. Я надеюсь, однако, что есть один запрос, который я могу выполнить, который будет возвращать все результаты одновременно, чтобы предотвратить избыток back-and-forth между PHP-приложением и LDAP-сервером (AD).Каков наилучший способ выбора атрибутов для всех членов группы AD LDAP из PHP?
спользование LDAP browser Я могу успешно запустить поиск по моей полной области:
Search DN: DC=middlebury,DC=edu
Filter: (memberOf=CN=BG_Cells,OU=General,OU=Groups,DC=middlebury,DC=edu)
Attributes: objectClass,mail,givenName,sn,sAMAccountName,telephoneNumber
и вернуться к ожидаемым результатам. Однако, когда я пытаюсь использовать этот фильтр, используя метод PHP ldap_search()
, я получаю Operations error
с кодом 1
.
Ниже приведен PHP, который я использую.
....
$baseDN = 'DC=middlebury,DC=edu';
$filter = '(memberOf=CN=BG_Cells,OU=General,OU=Groups,DC=middlebury,DC=edu)';
$attributes = array('objectClass','mail','givenName','sn','sAMAccountName','telephoneNumber');
$result = ldap_search($connection, $baseDN, $filter, $attributes);
if (ldap_errno($connection))
print "Read failed for $filter with message: ".ldap_error($connection).", #".ldap_errno($ connection));
Другие фильтры прекрасно работают с этими атрибутами и используя только array('mail')
или пустой массив для атрибутов не избавиться от результата ошибок, поэтому я уверен, что проблема с моим фильтром, а не связи или набор атрибутов.
Второй вариант заключается в том, чтобы сделать один запрос для члена группы dns в поле 'member' группы, а затем построить длинный запрос OR с каждым членом dn. Однако это все равно потребует двух запросов.
Так есть лучший способ получить атрибуты каждого члена, в идеале, в одном запросе?
Пожалуйста, разместите соответствующий фрагмент кода. –
Я обновил вопрос с помощью соответствующего PHP. –