ma-100140 @ ウィキ LDAPによる認証
※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

現在つくっているシステムの認証にADを利用しようと思い立ち、PHPでLDAPを利用して実装しました。

PHPの設定変更(win版:テスト環境、自分のPC)

  1. php.iniのexstensionのコメントをはず
  2. ssleay32.dllとlibeay32.dllがapacheから参照できることが前提

win版はすんなりと設定できましたVersion 5.2.6

PHPの設定変更(linux版:本番環境、サーバー)

本番環境はソースからコンパイルしているため、PHPを再コンパイルする必要がありました。
流れとしては

  1. Berkeley DB を導入
  2. OpenLDAP 2.4.11-Releaseの導入
  3. phpの再コンパイル

Berkeley DB の導入

$ tar zxvf db-4.7.25.NC.tar.gz
$ cd db-4.7.25/build_unix/
$ ../dist/configure
$ make
$ make instrall
$ chown -R root:wheel /usr/local/BerkeleyDB.4.7

OpenLDAP 2.4.16の導入

openldap-stable-20080813.tgzをダウンロード

$./configure

途中略
checking for db.h... yes
checking for Berkeley DB major version... 4
checking for Berkeley DB minor version... 1
checking for Berkeley DB link (-ldb-4)... no
checking for Berkeley DB link (-ldb4)... no
checking for Berkeley DB link (-ldb)... yes
checking for Berkeley DB version match... yes
checking for Berkeley DB thread support... yes
checking Berkeley DB version for BDB/HDB backends... no
configure: error: BDB/HDB: BerkeleyDB version incompatible

Berkeley DB のバージョンが違う?
実は最初は何も考えずにOpenLDAPから作業を開始しました。
そうしたら、もともと4.1がインストールされていたみたいです。
そこで、最新のBerkeley DB4.7をインストールしましたが、うまく行かない。
色々ググってみると、バージョンは4.2がいいみたい。

  • OpenLDAPとBerkeley DBのバージョンの組み合わせ
    OpenLDAP Berkeley DB
    4.1 4.2 4.6 4.7
    2.3.43 incompatible × ×
    2.4.11 incompatible × ×
    2.4.16 incompatible × × ×

最終的な手順

  1. Berkeley DB4.2の導入
    $cd db-4.2.52.NC
    $cd build_unix
    $../dist/configure
    $make
    $make install
    $ chown -R root:wheel /usr/local/BerkeleyDB.4.2
    
  1. OpenLDAP 2.4.11の導入
$ vi /etc/ld.so.conf

でBerkeley DB4.2のライブラリーを追加

$ ldconfig

で変更を適用

$ cd OpenLDAP2.4.11
$ CPPFLAGS=-I/usr/local/BerkeleyDB.4.2/include LDFLAGS=-L/usr/local/BerkeleyDB.4.2/lib ./configure
$ make
$ make test
$ make install

でやっと導入できました。

PHPの再コンパイル

./configure --with-mysql=/usr/local/mysql --with-apxs=/www/bin/apxs \
--with-gd --with-jpeg-dir=/usr/local/lib --with-zlib-dir=/usr/local/lib \
--enable-mbstring \
--with-ldap=/usr/local

phpでのテスト結果

認証プログラム