2012-03-26 2 views
1

Я пытаюсь найти ldap. Это делает успешную проверку подлинности, я проверил, используя правильный и неправильный пароль. Соединение Ldap является успешным. Затем, когда я делаю поисковый запрос, он не может читать атрибуты из LDAP (AD). Что здесь не так? Имеет ли ldap/AD какие-либо ограничения/разрешения на то, что может?Ldap поиск в net-ldap Ruby Rails

#!/usr/bin/env ruby 
require "net-ldap" 
$username = String.new 

class ActiveDirectoryUser 
    SERVER = '10.10.10.10' 
    PORT = 389 
    BASE = 'DC=mydomain,DC=com' 
    DOMAIN = 'mydomain.com' 

    def self.authenticate(login, pass) 
    conn = Net::LDAP.new :host => SERVER, 
         :port => PORT, 
         :base => BASE, 
         :auth => { :username => "#{login}@#{DOMAIN}", 
            :password => pass, 
            :method => :simple } 
    if conn.bind 
     conn.search(
     :base => BASE, :filter => Net::LDAP::Filter.eq(
"sAMAccountName", login), 
     :attributes => %w[ givenName ], :return_result => true) do 
|entry| 
     puts "givenName: #{entry.givenName}" 
     $username = entry.givenName 
     end 
     return true 

    else 
     return false 
    end 
    rescue Net::LDAP::LdapError => e 
    return false 
    end 
end 

if ActiveDirectoryUser.authenticate('myusername', 'mypassword') 
puts "Authentication Successful! The user is "+$username 
#### I get this,but blank username 
else 
puts "Authentication FAILED!" 
end 


----------- 

# ./ad.rb 
Authentication Successful! The user is 

Спасибо Терри за ответ. Это была небольшая проблема. Мне не хватало некоторых деталей в древовидной структуре. Он работает сейчас.

ответ

0

LDAP-совместимые серверы каталогов должны обеспечивать контроль доступа, поэтому возможно, что клиент LDAP:

  • не может найти запись
  • не может читать любые атрибуты из записи
  • не может прочитать некоторые атрибуты из записи

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

Код приложения должен проверять наличие соответствующей записи с использованием средств командной строки, если существуют вопросы о том, была ли аутентификация успешной или существует ли запись. Для получения информации об инструменте командной строки ldapsearch см. LDAP: using ldapsearch.

Смежные вопросы