2015-11-26

openldapをActiveDirectoryのプロキシーとして設定する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
openldapをActiveDirectoryのプロキシーになるように設定して、openldap経由でActiveDirectoryの内容を確認する方法です。

ちなみに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が戻ります。


2015-11-25

redmineの認証にActiveDirectoryを利用する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
redmineの認証をActiveDirectoryにオマカセする方法です。

[管理]-[LDAP認証]の画面で「新しい認証方式」をクリックします。

そして最低限、以下のように設定します。

名称:AD(お好きな名称を設定します) 
ホスト:XXX.XXX.XXX.XXX(ActiveDirectoryのドメインサーバ名かIPアドレス) 
ポート:389 
アカウント:domain\$login(domainは利用するActiveDirectoryのドメイン名です。普段利用しているドメインアカウントがdomain\mynameみたいなものだったら、mynameの部分を$loginに置き換えて登録します。) 
パスワード:(空白) 
検索範囲:DC=domain,DC=sample,DC=co,DC=jp(ユーザを検索するBaseDNを設定します) 
ログイン名属性:sAMAccountName

これで作成して、テストを実施して
接続しました。
と出ればOKです。

そしてredmineにすでに作成済みのユーザがいて、認証をActiveDirectoryに切り替えたい場合は、
[管理]-[ユーザ]の画面で「設定変更したいユーザ」をクリックします。

そして 
認証方式:AD(上記で作成したもの) 
に変更して保存すればOKです。

これでActiveDirectoryに設定してあるパスワードでredmineにログインできるようになります。


ちなみに以下のサイトであるようなredmineとsubversionを連携させてredmineのユーザ情報でsubverionを認証させている場合、設定はそのままでLDAPの情報をきちんとひっぱて来てくれてsubversion側もActiveDirectoryのパスワードで認証できるようになりました。
http://blog.ogatomo.com/blog/2012/05/17/redmine-pm-setting-memo/