ADサーバーとの認証
ふと思い立って調べてみたら、昔かなり苦労してできなった社内のADサーバーでユーザー認証ができた。集中力の差だろうか...。
前はLDAPをいじくってあーだこーだやってできなかったけど、シンプルにするのがコツだったようなのでメモ。何か社内認証が必要なところで使えるような気がするのでメモ。
あと、Base指定が他のサンプルを参考にしたけど、うちのAD環境は少し違ったようなので社内ポータルの設定を見て解析してみました。
require 'rubygems'
require 'net/ldap'
require 'kconv'
require 'pp'
host = "adsv01.test-inc.local"
port = "389" #ポート番号
domain = "test-inc.local"
base = 'OU=All-Users,DC=test-inc,DC=local'
user = "1234"
pass = "hogehogehoge"
conn = Net::LDAP.new(
:host => host,
:port => port,
:auth => {
:method => :simple,
:username => "#{user}@#{domain}",
:password => pass
}
)
raise 'Auth Fail!' unless conn.bind
entries = Hash.new
conn.open { |ldap|
filter = Net::LDAP::Filter.eq('samaccountname', "#{user}")
ldap.search( :filter => filter, :base=> base ) do |entry|
entry.each do |field, value|
entries[field] = value
end
end
}
p entries[:mail]
pp entries