Created
May 25, 2014 20:14
-
-
Save thinkAmi/a3ee427b1c64df204a52 to your computer and use it in GitHub Desktop.
ActriveLdapのサンプルコード
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'active_ldap' | |
HOST_IP_V4 = '192.168.0.1' | |
BIND_USER_CN = 'ふがふが' | |
BIND_USER_OU = '' | |
BIND_USER_PASSWORD = 'fugafuga' | |
def create_ou_string | |
BIND_USER_OU.empty? ? '' : "ou=#{BIND_USER_OU}," | |
end | |
# ENV['USERDNSDOMAIN']には、example.localという形で入っている | |
domain = ENV['USERDNSDOMAIN'].split('.') | |
base = "dc=#{domain[0]},dc=#{domain[1]}" | |
bind_user = "cn=#{BIND_USER_CN},#{create_ou_string}#{base}" | |
# 今回の範囲内では、Bindするユーザーは「Domain users」グループでも構わない | |
ActiveLdap::Base.setup_connection host: HOST_IP_V4, | |
port: 636, | |
method: 'ssl', | |
base: base, | |
bind_dn: bind_user, | |
password: BIND_USER_PASSWORD | |
class LdapUser < ActiveLdap::Base | |
# OU'hoge'内に制限するなら、prefixに 'hoge' を渡す | |
ldap_mapping dn_attribute: 'cn', prefix: '' | |
def member?(group) | |
# 見つからない場合、Array#indexはnilを返すのを利用 | |
result = self.memberOf.index do |m| | |
m.rdns.index { |r| r.has_value?(group) } | |
end | |
!result.nil? | |
end | |
end | |
# ドメイン内ではユーザーログオン名は一意になるため、 :firstを指定しておく | |
# CNで探す場合 | |
user1 = LdapUser.find(:first, 'fuga_cn') | |
p user1.memberOf | |
if user1.member?('hogehoge') | |
puts 'CNで検索し、所属を確認しました' | |
else | |
puts 'CNで検索し、所属を確認できませんでした' | |
end | |
# ログオン名で探す場合 | |
user2 = LdapUser.find(:first, filter: '(sAMAccountName=fuga_logon)') | |
p user2.memberOf | |
if user2.member?('hogehoge') | |
puts 'ユーザーログオン名で検索し、所属を確認しました' | |
else | |
puts 'ユーザーログオン名で検索し、所属を確認できませんでした' | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source 'https://rubygems.org' | |
gem 'activeldap' | |
gem 'net-ldap' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment