Почему этот запрос LDAP возвращает массив только с 0

Я новичок в LDAP и Active Directory. Я пытаюсь получить Email-ID аутентифицированного пользователя, используя следующий код. Однако, когда я запускаю его, все, что я получаю, это массив с 0 в нем.

Вот код

$server ='ldaps://DOMAIN';
$username = 'DOMAIN\UID';
$password = 'PASSWORD';

$base_dn = 'dc=DOMAIN';
$search_filter = 'dn=UID';
$attributes = ['mail'];

$ldap = ldap_connect($server);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, $username, $password);
$search = ldap_search($ldap, $base_dn, $search_filter, $attributes);
$data = ldap_get_entries($ldap, $search);

foreach($data as $dataPoint)
{
echo $dataPoint;
echo "<hr>";
}

Это выводит только 0 с горизонтальной линией под ним.

Самое сложное в том, что здесь нет сообщений об ошибках, и я не очень хорошо знаком ни с LDAP, ни с Active Directory.

Любая идея о том, почему это может происходить.

1

Решение

Я вижу несколько вещей, которые потенциально могут вызывать проблемы из кода выше:

  • Вы действительно хотите использовать ldaps://? Обычно это не то, что вы хотите сделать. Если вы хотите использовать зашифрованное соединение, вы должны использовать ldap_start_tls и звонок должен быть сделан после ldap_connect, Для целей тестирования я бы просто изменил его на ldap://,
  • Ваш $base_dn переменная, кажется, отсутствует часть домена. Это должно быть не имя NETBIOS вашего домена, а полное доменное имя. Так что если ваш домен был domain.com тогда база dn будет dc=domain,dc=com,
  • Ваш поисковый фильтр ($search_filter) неправильно сформирован. Если вы пытаетесь получить пользовательский объект из LDAP с заданным именем учетной записи, вы можете использовать поисковый фильтр, например: (sAMAccountName=UID)

Чтобы получить лучшее представление о том, что может идти не так, вы можете использовать ldap_error и позвоните после подключения: echo "Error: ".ldap_error($ldap);, Вы можете сделать это после любого вызова, связанного с LDAP, чтобы получить больше информации о том, что могло пойти не так.

0

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

Других решений пока нет …

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