Zend Framework — вытащить полный список пользователей из моего контроллера домена через LDAP

Я установил новый веб-сервер с Apache 2.4, PHP7 и Zend Framework

Аутентификация работает только с одним пользователем, поэтому я знаю, что я установил Zend Framework правильно, и он работает.

Моя проблема в том, что теперь я хочу отобразить полный список всех пользователей на DC и их групп. Как мне сгенерировать массив (или отобразить) со всеми пользователями?

0

Решение

Поскольку вы используете Zend Framework, вы можете захотеть взглянуть на Зенд-LDAP

Самый простой способ получить список узлов будет выглядеть так:

use Zend\Ldap\Ldap;

$options = [/* ... */];
$ldap = new Ldap($options);
$ldap->bind();
$result = $ldap->search(
'(uid=*)',
$searchBase,
Ldap::SEARCH_SCOPE_SUB
);

foreach ($result as $item) {
echo $item["dn"] . ': ' . $item['cn'][0] . PHP_EOL;
}

Но будьте осторожны: есть два ограничения на количество возвращаемых элементов: один устанавливается клиентом, который может быть перезаписан, но второй устанавливается сервером и не подлежит изменению. Поэтому обычно вы не сможете получить более 1000 предметов за один раз.

В настоящее время мы работаем над тем, как обойти это ограничение, когда определенное расширение установлено на LDAP-сервере (что не всегда так), но в настоящее время это ограничение установлено.

Для получения дополнительной информации о параметрах Zend\Ldap\Ldap::search() Вы можете посмотреть на исходный код

Для этого вам нужно будет установить Зенд-LDAP с помощью composer require zendframework/zend-ldap

1

Другие решения

Что вы могли бы сделать после связывания, примерно так:

$filter = "uid=*";
$sr = ldap_search($ds, $dn, $filter) or die ("bummer");

$results = ldap_get_entries($ds, $sr);
var_dump($results);

Кроме того, вы можете добавить четвертый параметр $ justthese, чтобы убедиться, что вы извлекаете только те данные, которые вам нужны, что экономит время и трафик. Тогда это будет:

$filter = "uid=*";
$justthese = array("cn","uid","mobile","email");
$sr = ldap_search($ds, $dn, $filter, $justthese) or die ("bummer");

$results = ldap_get_entries($ds, $sr);
var_dump($results);
0

По вопросам рекламы [email protected]