2012-03-26 56 views
1

我正在尝试搜索ldap。这是成功的身份验证,我使用正确和不正确的密码进行了验证。 Ldap连接成功。然后,当我进行搜索查询时,它无法从LDAP(AD)读取属性。这里有什么问题? ldap/AD对谁可以做什么有任何限制/权限?在net-ldap中搜索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