Получить всех пользователей из группы Active Directory - PullRequest
1 голос
/ 08 декабря 2011

Я пытаюсь прочитать некоторые учетные записи пользователей из Active Directory. Я могу подключиться и подтвердить подлинность просто отлично. Но какой бы поиск я ни бросил, я получаю «Ошибка операции». Есть идеи, что это может быть?

Я запускаю сценарий на компьютере с сервером Windows 2k8 с CLI PHP 5.3.8. (Я не эксперт по AD :) dsa.mcs говорит мне, что хост AD имеет DC Type = GC и DC DC W2K8.

// $ds = ldap_connect($host, $port);
// $db = ldab_bind($ds, $user, $password);
// $ds and $db are verified, connected and authenticated!

$dn = "CN=All users in Some City,OU=Some Group,OU=Some City,OU=Company Name,DC=bar,DC=foo,DC=com";
//$filter = 'sAMAccountName=' . $username;
//$filter = "(&(&(&(objectCategory=person)(objectClass=user))))";
$filter = "(objectClass=user)";
$attributes = array('sn', 'givenName', 'memberOf');
$res = ldap_search($ds, $dn, $filter, $attributes);

// results in 
//   ldap_errno(): 1
//   ldap_error(): Operations error

запуск фолвинга в «терминале» (что-то вроде коробки), просто отлично возвращает список пользователей.

dsget group "CN=All users in Some City,OU=Some Group,OU=Some City,OU=Company Name,DC=bar,DC=foo,DC=com" -members

WTF я здесь скучаю?

1 Ответ

1 голос
/ 08 декабря 2011

Я могу повторить вашу проблему на SBS 2003.

Попробуйте добавить следующие две строки между вашими вызовами ldap_connect() и ldap_bind():

// Use protocol version 3
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
// Don't follow referrals
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

Это решает проблему для меня.

...