Лучший способ опрашивать пользователей LDAP через ruby ​​net-ldap? - PullRequest
3 голосов
/ 22 июня 2011

Есть ли лучший способ поиска пользователей и компьютеров, в частности с использованием гема Net-ldap?

Вот что мне нужно сделать, чтобы получить только пользователей.

results = search :base => @base, :filter => Net::LDAP::Filter.eq("cn", "*")
  @results = Array.new

  results.each do |result|
    @results.push result if result[:objectclass].include? "person" unless result[:objectclass].include? "computer"

Похоже, был бы лучший способ. Я не вижу ничего очевидного в документации.

Ответы [ 2 ]

5 голосов
/ 03 января 2013

Вы можете использовать функциональность фильтра присоединения net-ldap:

filter = Net::LDAP::Filter.eq("sAMAccountName", "*")
filter2 = Net::LDAP::Filter.eq("objectCategory", "organizationalPerson")

joined_filter = Net::LDAP::Filter.join(filter, filter2)

ldap.search(:base => treebase, :filter => joined_filter) do |entry|
    puts entry.sAMAccountName
end
2 голосов
/ 23 июня 2011

Если вам известен объектный класс, который используется для лиц, вы можете использовать фильтр '(objectClass=person)', заменив «персона» на объектный класс. Большинство реализаций будет использовать 'person' или objectClass, который наследуется от 'person', например 'inetOrgPerson'. Использование фильтра '(cn=*)', скорее всего, позволит получить записи, которые не являются персонами.

Попробуйте использовать Filter.eq("objectClass","person")

...