Книга: Программирование на языке Ruby

10.4.4. Интерфейс с LDAP

10.4.4. Интерфейс с LDAP

Для Ruby есть по меньшей мере три разных библиотеки, позволяющих работать с протоколом LDAP. Ruby/LDAP, написанная Такааки Татеиси (Takaaki Tateishi), — это довольно «тонкая» обертка. Если вы хорошо знакомы с LDAP, то ее может оказаться достаточно; в противном случае вы, наверное, сочтете ее слишком сложной. Пример:

conn = LDAP::Conn.new("rsads02.foo.com")
conn.bind("CN=username,CN=Users,DC=foo,DC=com", "password") do |bound|
 bound.search("DC=foo,DC=com", LDAP::LDAP_SCOPE_SUBTREE,
  "(&(name=*) (objectCategory=person))", ['name','ipPhone'])
 do |user|
  puts "#{user['name']} #{user['ipPhone']}"
 end
end

Библиотека ActiveLDAP организована по образцу ActiveRecord. Вот пример ее использования, взятый с домашней страницы:

require 'activeldap'
require 'examples/objects/user'
require 'password'
# Установить соединение Ruby/ActiveLDAP и т. д.
ActiveLDAP::Base.connect(:password_block
 => Proc.new { Password.get('Password: ') },
  :allow_anonymous => false)
# Загрузить запись с данными о пользователе
# (ее класс определен в примерах).
wad = User.new('wad')
# Напечатать общее имя.
р wad.cn
# Изменить общее имя.
wad.cn = "Will"
# Сохранить в LDAP.
wad.write

Есть также сравнительно недавняя библиотека, написанная Фрэнсисом Чианфрокка (Francis Cianfrocca), многие предпочитают именно ее:

require 'net/ldap'
ldap = Net::LDAP.new :host => server_ip_address,
 :port => 389,
 :auth => {
  :method => :simple,
  :username => "cn=manager,dc=example,dc=com",
  :password => "opensesame"
 }
filter = Net::LDAP::Filter.eq( "cn", "George*" )
treebase = "dc=example,dc=com"
ldap.search( :base => treebase, :filter => filter ) do |entry|
 puts "DN: #{entry.dn}"
 entry.each do |attribute, values|
  puts " #{attribute}:"
  values.each do |value|
   puts " --->#{value}"
  end
 end
end
p ldap.get_operation_result

Какая из этих библиотек лучше — дело вкуса. Я рекомендую познакомиться со всеми и сформировать собственное мнение.

Оглавление книги


Генерация: 1.276. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз