Авторизация пользователей Joomla через Active Directory (LDAP)

28.02.2018 0 Автор Nazario Leodovinchi
Авторизация пользователей Joomla через Active Directory (LDAP)

Авторизация пользователей Joomla через Active Directory (LDAP)

Авторизация пользователей Joomla через Active Directory (LDAP)

Авторизация пользователей Joomla через Active Directory (LDAP)

Никогда не думал, что столкнусь с такой задачей, тем не в один прекрасный день возникла необходимость создать корпоративный портал для внутреннего использования. В организации есть домен и куча пользователей в этом домене. Было бы безусловно круто не плодить сущности (не создавать заново учетки для пользователей), а как-то привязаться к домену.

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

1 этап — правка файла PHP.ini

Нужно раскомментировать строчку:
extension=php_ldap.dll
Это библиотека, благодаря которой возможно взаимодействие Joomla с доменом Active Directory по протоколу LDAP.

2 этап — настройка плагина «Авторизация LDAP»

Идем в менеджер плагинов и ищем среди них «Авторизация LDAP», активируем его.
Предположим, что домен у нас называется domain.local, адрес контроллера домена — 192.168.0.1.
В настройках плагина нужно сделать следующие настройки (по крайней мере, у меня так заработало 🙂
Параметр
Значение
Комментарий
Хост
192.168.0.1
IP-адрес контроллера домена
Порт
389
не трогаем
Выполнять LDAP3
ДА
Выполнять TLS
НЕТ
Следовать перенаправлениям
НЕТ
Метод авторизации
Привязать и найти
При успешной авторизации Joomla создаст свою
внутреннюю учетку, которую можно будет потом
поместить в ту или иную группу доступа. К
сожалению, группы пользователей из Active
Directory Joomla подтягивать не умеет.
Если нашли способ сделать это, поделитесь в
комментариях к статье!
Базовый DN
dc=domain,dc=local
Разделяем домен на уровни и перед каждым
уровнем пишем dc=…, между ними никаких
пробелов, только запятые
Строка поиска
sAMAccountName=[search]
Регистр имеет значение!
Пользовательский DN
оставляем пустым
Имя пользователя подлючения
Имя доменного администратора
Пароль подключения
qwerty123
Соответственно, пароль доменного администратора
Map: Full Name
displayName
То, как на сайте будет высвечиваться имя пользователя
Map: Email
mail
то же самое — емэйл
Map: User ID
uid
идентификатор пользователя
 
Сохраняем настройки, открываем сайт и пытаемся залогиниться. При этом вводить имя доменного пользователя указываем без @domain.local — все должно заработать! 
Подозреваю, что многие нюансы зависят от версий программного обеспечения. На всякий случай, все это тестировалось на следующем сервере:
  • Веб-сервер — Xampp 5.6.15 (PHP 5.6.15)
  • Joomla 3.6.3
  • Контроллер домена Windows Server 2008 R2
Замечена странность — Joomla не хочет авторизовать пользователей, чей логин в домене не совпадает с адресом электронной почты в Exchange. При попытке авторизации выдается сообщение об ошибке:
Решение данной проблемы пока не найдено. Если вы знаете, как это преодолеть, пожалуйста, поделитесь в комментариях.