Ruby active directoryにldap接続を行う
Rubyでactive directoryにldap接続を行うまでの手順を記述してます。Rubyのバージョンは3.0.0となります。
環境
- OS CentOS 7.9.2009 (Core)
- Ruby 3.0.0
net-ldap使用
net-ldapというライブラリを使用してLDAP接続を行います。
gemでインストールします。
gem install net-ldap
ldap接続
rubyから実行してみます。
ここでは「active directory」は以下の構成になっているものとしてます。
- サーバー : 192.168.1.100
- ドメイン : hoge.local
- adminのパスワード : password
require "net/ldap"
ldap = Net::LDAP.new :host => "192.168.1.100",
:port => 389,
:auth => {
:method => :simple,
:username => "cn=administrator, dc=hoge, dc=local",
:password => "password",
}
if ldap.bind
p "成功"
else
p "失敗"
end
実行結果
成功
これで「bind」できたことが確認できます。
データを取得するには「search」を使用します。見やすくするため「pp」ライブラリを使用してます。
※ここでは、ouを「Keiri-OU」から取得してます。
require "net/ldap"
require "pp"
ldap = Net::LDAP.new :host => "192.168.1.100",
:port => 389,
:auth => {
:method => :simple,
:username => "cn=administrator, dc=hoge, dc=local",
:password => "password",
}
if ldap.bind
p "成功"
else
p "失敗"
end
groups = ldap.search(base: "ou=Keiri-OU,dc=hoge,dc=local")
pp groups
「filter」を使用することも可能です。
require "net/ldap"
require "pp"
ldap = Net::LDAP.new :host => "192.168.1.100",
:port => 389,
:auth => {
:method => :simple,
:username => "cn=administrator, dc=hoge, dc=local",
:password => "password",
}
if ldap.bind
p "成功"
else
p "失敗"
end
filter = Net::LDAP::Filter.eq("sAMAccountName", "ueda")
treebase = "ou=Keiri-OU,dc=hoge,dc=local"
ldap.search(:base => treebase, :filter => filter) do |entry|
pp "DN: #{entry.dn}"
entry.each do |attribute, values|
pp attribute
values.each do |value|
pp value
end
end
end
-
前の記事
php htmlspecialchars_decodeでHTMLエンティティ化されたものを戻す 2021.10.09
-
次の記事
Vue.js ホイールボタンのクリックイベントを設定する 2021.10.09
コメントを書く