rubyからLDAPでアクセスしてみる


お前は最近何をやっているんだとツッコまれそうなポストの統一感の無さですが、
今回はrubyLDAPを利用する方法を調べてみたのでメモ。



rubyを使ってLDAPにアクセスする場合にはいくつか方法があるのですが、
今回は環境がすぐ整えやすかったNet::LDAPを使用した方法を。


いつものごとく、他のページまんまです(^^;;

http://d.hatena.ne.jp/yotaropg/20100201/1265002090


インストール


インストールはgemで一発です。これが今回利用してみた理由。

gem install  ruby-net-ldap
使い方


まず、サーバへの接続は次の方法でアクセスします。

SERVER = 'ホスト名'    # ADサーバーのホスト名 or IPアドレス
PORT = 389             # ADサーバーのポート番号 (default 389)
BASE = 'ou=トップレベルOU, dc=hoge, dc=local'    # ou=トップレベルOU、
dc=ADドメイン名1, dc=ADドメイン名2, ...
DOMAIN = 'hoge.local'  # 「ADアカウント名@ADドメイン名」形式のドメイン
名部分

#LDAPサーバーに接続
conn = Net::LDAP.new :host => SERVER, :port => PORT, :base => BASE,
                    :auth => { :username => "#{account}@#{DOMAIN}",
                               :password => pass, :method => :simple }

その後バインドして成功すれば値を取得となります。

#認証処理
if conn.bind
 #属性取得
 entries = Hash.new
 conn.open do |ldap|
   filter = Net::LDAP::Filter.eq("cn", account)
   ldap.search(:filter => filter, :return_result => false ) do |entry|
     entry.each do |attr_name, values|
       entries[attr_name] = values
     end
  end
 end
end


こんな感じにやればLDAPを利用できます。
ソース自体はそんなに難しくないので、結構すんなりできそう。
問題は、自分がLDAP自体をよくわかっていないことだが・・・。