rubyからLDAPでアクセスしてみる
お前は最近何をやっているんだとツッコまれそうなポストの統一感の無さですが、
今回はrubyでLDAPを利用する方法を調べてみたのでメモ。
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自体をよくわかっていないことだが・・・。