PHPからActive DirectoryへLDAPで接続する

PHPからActive Directoryへ接続するときのメモ。

LDAP関数を利用して接続する(LDAP認証)

PHPからActive Directoryへ接続する場合LDAP関数を利用して接続します。
ldap_connect関数は指定されたホスト名やポートの妥当性をチェックしパラメータの初期化を行ないます。 ldap_bind関数により実際に接続されます。

$host = 'ldap://192.168.0.1';
$port = 3268;
$rdn = 'CN=test,CN=Users,DC=example,DC=local';
$pass = 'password';

$cnn = ldap_connect($host, $port);
if ($cnn) {
  $bind = ldap_bind($cnn, $rdn, $pass);
  if ($bind) {
    // バインド成功
  } else {
    // バインド失敗
  }
}

ユーザー名でエントリを取得する

ベースDN内のtestというユーザのmemberof属性を取得します。 属性を指定しない場合、全ての属性と値を取得するため効率が悪くなります。

(省略)
$user_name = 'test';
$base_dn = 'CN=Users,DC=example,DC=local';
$filter = "(sAMAccountName=$user_name)";
$attributes = array('memberof');

$search = ldap_search($cnn, $base_dn, $filter, $attributes);
$entries = ldap_get_entries($cnn, $search);