Мне нужно выбрать количество атрибутов для всех пользователей в определенной группе из приложения PHP. Я понимаю, что могу запросить атрибут 'member' группы, чтобы получить dn каждого члена, а затем сделать отдельный запрос LDAP для атрибутов каждого участника. Я надеюсь, однако, что есть один запрос, который я могу выполнить, который возвратил бы все результаты одновременно, чтобы предотвратить избыточную перемотку между приложением PHP и сервером LDAP (AD).
Использование браузера LDAP Я могу успешно выполнить поиск по всему полному домену:
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. Однако это все равно будет связано с двумя запросами.
Так есть ли лучший способ получить атрибуты каждого члена, в идеале в одном запросе?