コンピュータ

Simple LDAP Login

会社のホームページをWordPressにしたのでユーザ認証に他でも使っているLDAPを導入しようとした。

ちょっとはまったので多少でも他人の助けになればと思いやったことを書いてみる。
いくつかプラグインはあるもののどれもうまくいかなく、ちょっと時間がなかったのでいったん断念した。

その後ちょっとその余裕ができたのでSimple LDAP Loginを用い、LDAPサーバのログを見ながら原因をつかみソースをいじった。

その前に前提条件としてWordPressに通常の方法でLDAPのアカウント情報と同じユーザを作っておく必要がある(ここは本家に太字で書いてある)。
つまりWordPressで設定したパスワードとLDAPでのパスワードどちらかで認証されることになる。

次に管理画面からの設定。

  1. account suffix
  2. base dn
  3. domain controllerを設定するわけだがうちの場合dnがuid=hoge, ou=Users, dc=example,dc=comといった検索になるので
    1. account suffix -> なし
    2. base dn -> ou=Users, dc=example,dc=com
    3. ldapサーバのホスト名

とする。これだけだとまだ不十分でadLDAP.phpのauthenticateをハック。

> \--- simple-ldap-login/adLDAP.php~ 2008-12-20 23:07:14.000000000 +0900 +++ simple-ldap-login/adLDAP.php 2009-01-07 22:29:14.343750000 +0900
@@ -133,7 +133,7 @@ if ($username==NULL || $password==NULL){ return (false); } //prevent null binding //bind as the user \
- $this->_bind = @ldap_bind($this->_conn,$username.$this->_account_suffix,$password); \
+ $this->_bind = @ldap_bind($this->_conn,'uid='.$username.$this->_account_suffix.','.$this->_base_dn,$password); if (!$this->_bind){ return (false); } //once we've checked their details, kick back into admin mode if we have it

ポイントとなるのはldap_bindの2つめの引数で修正したdnを与えてやるのだ。これは各自の環境に合わせればOK.

« 初詣 冬季園芸作業開始 »