会社のホームページをWordPressにしたのでユーザ認証に他でも使っているLDAPを導入しようとした。
ちょっとはまったので多少でも他人の助けになればと思いやったことを書いてみる。
いくつかプラグインはあるもののどれもうまくいかなく、ちょっと時間がなかったのでいったん断念した。
その後ちょっとその余裕ができたのでSimple LDAP Loginを用い、LDAPサーバのログを見ながら原因をつかみソースをいじった。
その前に前提条件としてWordPressに通常の方法でLDAPのアカウント情報と同じユーザを作っておく必要がある(ここは本家に太字で書いてある)。
つまりWordPressで設定したパスワードと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.