Я установил новый веб-сервер с Apache 2.4, PHP7 и Zend Framework
Аутентификация работает только с одним пользователем, поэтому я знаю, что я установил Zend Framework правильно, и он работает.
Моя проблема в том, что теперь я хочу отобразить полный список всех пользователей на DC и их групп. Как мне сгенерировать массив (или отобразить) со всеми пользователями?
Поскольку вы используете 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
Что вы могли бы сделать после связывания, примерно так:
$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);