PHPで、認証をLDAPにお任せする

Domino な LDAP サーバがある。

別のサーバの PHP な WEB アプリから、Domino にある情報を使って認証を行いたい。

PHP をビルドするときに --with-ldap を付けるだけで LDAP が使える。

あとは、今まで作った認証部分を LDAP に変更するだけ。

ものすごく簡単に流れを。

前提として、ユーザには、メールアドレス ($mailAddress) と パスワード ($password) を入力してもらうとしましょう。

  1. LDAP サーバに接続。
    $ds = ldap_connect("ldap_server", 389);
  2. 匿名でバインド。
    ldap_bind($ds);
  3. メールアドレスで検索。
    $sr=ldap_search($ds, "O=Organization", "mail=$mailAddress");
    ここで、O=Organization の所は、Domino で言うところの組織です。
  4. 検索結果より 識別名 ($dn) を取得。
    $info = ldap_get_entries($ds, $sr); $dn = $info[0]["dn"];
  5. LDAP で認証。 $dn$password をもとにバインドしてみる。
    ldap_bind($ds, $dn, $password)
    成功の場合にTRUE、エラーの場合はFALSEが帰ってきますのでこれで判断。