我正在嘗試編寫一個Ruby腳本來檢查用戶憑證是否有效使用活動目錄服務器。以下是我試過到目前爲止:如何使用活動目錄和紅寶石腳本檢查用戶憑據
require 'rubygems'
require 'net-ldap'
host = '10.4.1.6'
port = 389
username = 'username'
password = 'password'
ldap = Net::LDAP.new
ldap.host = host
ldap.port = port
ldap.auth "CN=#{username},CN=Users,DC=companyname,DC=ad", password
if ldap.bind
puts 'YES!'
puts ldap.get_operation_result.message
else
puts 'NO :-('
puts ldap.get_operation_result.message
end
如果我輸入一個不存在的用戶名和一個空字符串作爲密碼,綁定操作成功。如果輸入有效的用戶名和有效/無效/空密碼,則綁定操作將失敗,並顯示錯誤消息「無效憑證」。
我已經看過其他線程並閱讀net-ldap文檔,但我無法弄清楚我做錯了什麼。
有人可以給我一些想法如何實現這一點?
預先感謝任何答覆:-)
編輯:
作爲@StuartEllis建議的,問題是與用戶標識符。爲了找出正確的DN,我用下面的腳本(從net-LDAP資料爲準):
ldap.auth "CN='adminUser',CN=Users,DC=companyname,DC=ad", 'adminUserPwd'
ldap.bind
treebase = "DC=companyname,DC=ad"
filter = Net::LDAP::Filter.eq("mail", "[email protected]")
attrs = ["mail", "cn", "sn","objectclass"]
ldap.search(:base => treebase, :filter => filter, :attributes => attrs, :return_result => false) do |entry|
puts entry._dump 0
end
我再重試用我原來的腳本(上圖)與所獲得的DN,瞧!