ちなみにCentos6にopenldapをインストールする前提です。
まずは、openldapをインストールします。
yum install openldap openldap-servers openldap-clients
そしてActiveDirectory用スキーマダウンロードします。
wget http://lism.sourceforge.jp/docs/ad.schema -O /etc/openldap/schema/ad.schema
openldapはsyslogのlocal4にログを出力するようになっているらしいので、出力できるようにします。
vi /etc/rsyslog.conf
以下の内容を追記します。
------------------------------------------------------ # openldap slapd log local4.* /var/log/ldap. log ------------------------------------------------------
変更を反映させるためにsyslogを再起動します。
service rsyslog restart
ActiveDirectoryのプロキシーになるように設定をします。
vi /etc/openldap/slapd.conf
以下のように記載します。
以下peername.ipの部分は接続を許可するサーバのIPアドレスを記載しますが、接続制限をしないならばAccess Controllの部分はなしでOKです。
------------------------------------------------------ ### Schema includes ########################################################### include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/misc.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/ad.schema # Allow LDAPv2 client connections. This is NOT the default. allow bind_v2 # Main settings ############################################################### pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args ### Logging ################################################################### loglevel 256 ### Access Controll ########################################################## access to * by peername.ip=127.0.0.1 read by peername.ip=192.168.0.10 read by * none ### Database definitions ##################################################### database ldap readonly yes suffix "ActiveDirectoryのBaseDNを記載します" uri ldap://ActiveDirectoryサーバのホスト名かIPアドレス/ rebind-as-user idassert-bind bindmethod=simple binddn="ActiveDirectoryにBINDするユーザ" credentials=上記ユーザのパスワード mode=none idassert-authzFrom "*" ------------------------------------------------------
設定を反映させます。
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d
openldapを起動させます。
service slapd start
以下のような感じで接続できたらOKです。
ldapsearch -H ldap://localhost -x -b "上記で設定したActiveDirectoryのBaseDN" -LLL "sAMAccountName=jojo"
ちなみにldapsearchでActiveDirectory直接問い合わせるならば以下のような感じになります。 ldapsearch -D "ActiveDirectoryにBINDするユーザ" -w ユーザのパスワード -h ActiveDirectoryサーバのホスト名かIPアドレス -b "ActiveDirectoryのBaseDNを記載します" -x "sAMAccountName=jojo"
もう一つおまけで、この設定を行ったopenldapにrubyからActiveDirectory上のユーザパスワードの確認を行うとすると以下のような感じです。
require 'net/ldap' ldap = Net::LDAP.new ldap.host = "openldapが起動するホスト名またはIPアドレス" username,password = "jojo", "jojopwd" result = ldap.bind_as(:base => Settings.ad_base,:filter => "(cn=#{username})",:password => password )
パスワードがあっていればldapのオブジェクトが戻り、あってなければfalseが戻ります。
0 件のコメント:
コメントを投稿