Получить список всех пользователей ldap
Я пытаюсь получить список всех пользователей, которые существуют на ldap, чтобы создать окно автозаполнения в jquery. Однако мне не удается его получить. Я могу подключиться и привязать к серверу ldap, затем я пытаюсь использовать ldap_list()
, Я оставляю пробел в фильтре, чтобы ничего не фильтровать и получить весь список. тем не мение ldap_list()
устанавливает предупреждение (Search: Can't contact LDAP server
) и возвращает FALSE
, который заставляет все пойти не так, так как это логическое значение, и это не то, что ожидалось (Warning: ldap_get_entries() expects parameter 2 to be resource, boolean given
). Вот пример моего кода:
$identifier = ldap_connect(sfConfig::get('sf_ldap_host'));
if (!ldap_bind($identifier,
sfConfig::get('sf_ldap_generic_user').sfConfig::get('sf_ldap_usr_domain'),
sfConfig::get('sf_ldap_generic_password')))
{
throw new sfException('could not bind to the Active Directory');
}
$list = ldap_list($identifier, sfConfig::get('sf_ldap_dn'), '', array('mail'));
$list_user = ldap_get_entries($identifier, $list);
1 ответ
- Подключиться к серверу
- Измените состояние авторизации, передав запрос BIND с DN, который имеет достаточный доступ для поиска во всех частях DIT
- Если BIND был успешным, получить список всех
namingContexts
от корневого DSE - Для каждого namingContext передайте запрос поиска, используя базовый объект namingContext, объем
sub
фильтр(&)
или же(objectClass=*)
, сформулируйте список желаемых атрибутов. Только для пользователей используйте фильтр(objectClass=<object class in each user object>)
, например,(objectClass=person)
- Каждый результат поиска в ответе от сервера содержит объекты, которые соответствуют параметрам поиска
Состояние авторизации, установленное BIND, должно разрешать доступ и иметь возможность возвращать столько объектов, сколько требуется. Серверам разрешено ограничивать количество записей, возвращаемых клиенту, а также ограничивать количество секунд, затрачиваемых на оценку операции LDAP, в данном случае поиска.
Обратите внимание, что правильно сконфигурированный сервер может не разрешить траление каталога из-за загрузки этого места на сервере (что повлияет на других клиентов). Подумайте о том, чтобы сообщить администраторам сервера каталогов, что ваш клиент планирует перечислить всех пользователей.