2007年10月2日火曜日

PHPのLDAP関数でActiveDirectoryに接続.

 メモ走り書き.

 PHP4の環境からActiveDirectoryでの認証が必要になったのでテスト.

 ・ADサーバー : Windows Server 2003 Standard Edition

 マニュアルに従い、ldap_bindの第二引数にdnとして

  'cn=userid,ou=exampleou,o=excom,c=JP'
  'uid=userid,dc=example,dc=com'

 等々つっこんでみましたが、
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in ....

 とエラーが出るばかりで認証出来ず.
 何でだ?何でだ?と頭を悩ませる事1時間.

 …ん?これって普通に「userid@example.com」形式じゃ駄目?
 と思い至り、早速やってみると……普通に接続しやがりました orz


$objConnection = ldap_connect('ldap://example.com', 389);
  or die('could not connect Active-Directory.');
//-> ↓2007-10-02追記(これもセットした方が良さそうです)
ldap_set_option($objConnection, LDAP_OPT_PROTOCOL_VERSION, 3)
  or die('could not set protocol-version...');

if ($objConnection) {
  if (@ldap_bind($objConnection, 'userid@example.com', 'password')) {
    echo "success.<br>";
  } else {
    echo "error.<br>reason... " . ldap_error($objConnection) . "<br>";
  }
  ldap_unbind($objConnection);
}


 まぁ、あれです.
 アホです.
 生粋のアホです orz
 また今日も時間を無駄にした...

0 件のコメント: