Запросить всех пользователей в системе с LDAP - PullRequest
0 голосов
/ 06 июля 2010

Я использую библиотеку ruby ​​net / ldap для этой проблемы, но на самом деле язык драйвера не должен иметь большого значения.Мне нужно найти способ получить всех пользователей из системы и выяснить, каким пользователям не назначены электронные письма для учетной записи.Является ли это возможным?

Я могу подключаться и даже создавать новые записи через LDAP, и могу возвращать запросы, используя записи с подстановочными знаками для фильтрации результатов.

, если я создаю фильтр, чтобы найти cn, который начинается с трех 9:

  filter = Net::LDAP::Filter.eq("cn", "999*")
  @connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz", 
                     :filter  => filter)

тогда мой счетчик результатов может быть 42.

, если я создаю тот же фильтр, но запрашиваю только 1 девять, запрос завершается неудачно и возвращает false

  filter = Net::LDAP::Filter.eq("cn", "9*")
  @connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz", 
                     :filter  => filter)

и это то же самое, если я просто прошу "cn", "*", который должен сказать мне: «Дайте мне весь сп».

Ответы [ 2 ]

0 голосов
/ 13 августа 2010

Я думаю, что у вас есть проблема с ограничением времени, установленным для операций поиска на сервере LDAP.

Если у вас действительно большой поиск, который занимает много времени, сервер LDAP возвращает ошибку «Превышено ограничение времени».'и нет данных.

Ruby-Ldap в таком случае вызывает исключение LDAP :: ResultError.Однако я не знаю, как ведет себя Net-Ldap.

Попробуйте увеличить лимит времени на вашем сервере LDAP или используйте более жесткий фильтр поиска, такой как '(& (cn = 9 *) (active = TRUE)).Замените здесь 'active = TRUE' вашими критериями для активных пользователей.

0 голосов
/ 09 июля 2010

Итак, краткий ответ на вопрос: все зависит от того, как настроена ваша схема. Если вы настраиваете схему LDAP, вам нужно иметь несколько групп записей с различными идентификаторами cn (общее имя), например, cn=activeUsers и cn=inactiveUsers, которые позволят вам выполнять поиск в списке гораздо глубже, чем в моей ситуации.

...