Страница 1 из 1

LDAP аутентификация: ошибка аттрибута

Добавлено: 07.12.2017 23:47
Maanse
Доброго времени суток.
Возникла необходимость сделать в организации форум, и одним из важных моментов которые нужно обеспечить - возможность входа посредством доменной учетки.
Соответственно решено было настроить phpbb 3.2.1 с аутентификацией ldap
После многочисленных трудностей и испытаний (из разряда "Не удалось соединиться с сервером LDAP" "Произошла ошибка при поиске в директории ldap" и т.д.) был почитан мануал по php ldap и написан вот такой тестовый скриптец (мало ли кто-то также мучается):
lsaptest.php 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
$ldapserv = 'domain.local';
$ldapuser = 'domain\forum_admin';
$ldappass = 'password';
$ldaptree = "ou=Users,dc=domain,dc=local";
$ldapfilter = "(|(cn=*))";
$ldapattr = array("sAMAccountName", "displayName", "mail");
$ldapconn = ldap_connect($ldapserv) or die("Can't connect LDAP Server $ldapserv.");

if ($ldapconn)
{
$ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass);
if ($ldapbind)
{
echo "LDAP-bind successfull...\n";
$ldapsearch=ldap_search($ldapconn, $ldaptree, $ldapfilter, $ldapattr);
$ldapinfo = ldap_get_entries($ldapconn, $ldapsearch);
echo $ldapinfo["count"]." entries found\n";
echo "<table border=1>";
for ($i = 0; $i <= $ldapinfo["count"]-1; $i++)
{
echo "<tr><td>".$ldapinfo[$i]['samaccountname'][0]."</td><td>".$ldapinfo[$i]['displayname'][0]."</td><td>".$ldapinfo[$i]['mail'][0]."</td></tr>";
}
echo "</table>";
}
else { echo "LDAP-bind failed...\n"; }
}
?>
После успешного прогона скрипта наконец-то вылезла таблица с логинами, отображаемыми именами и почтовыми ящиками пользователей. А также возникло ощущение того что я не совсем идиот.
Далее настройки из скрипта были забиты в форум, и... ошибка:
Указанный атрибут email не существует.
Это при том, что указан атрибут mail, и скрипт по этому атрибуту выдает нужную информацию.

Поиск по "Указанный атрибут email не существует." ничего не дал, кроме одной темки на англоязычном форуме phpbb, с аналогичной проблемой.
Там автор вышел из ситуации заменив атрибут mail на userPrincipalName. Попробовал, заработало, но мне такой вариант не подходит, потому что не у всех пользователей совпадает userPrincipalName и mail

В общем вопрос - это баг или я что-то делаю не так? Создается такое ощущение что phppp изменяет атрибут mail на еmail
Подскажите куда копать?

Заранее спасибо!

Re: LDAP аутентификация: ошибка аттрибута

Добавлено: 13.12.2017 22:22
nissin
Попробуйте добавить отладочную печать в файле phpbb/auth/provider/ldap.php
После

Код: Выделить всё

		$result = @ldap_get_entries($ldap, $search);
Ну и увидите, что попадает в phpBB из LDAP.

Там дальше в коде проверяется значение:

Код: Выделить всё

$result[0][htmlspecialchars_decode($this->config['ldap_email'])]

Re: LDAP аутентификация: ошибка аттрибута

Добавлено: 26.03.2018 12:33
Maanse
Пришлось отложить это занятие на долгое время. Сейчас переделал сервер с нуля и видимо какие-то настройки сыграли роль. Атрибут mail теперь нормально принимается при настройке аутентификации ldap. Так что тема не актуальна, спасибо!