Авторизация через LDAP

  • Создана: 04.04.2017
  • Обновлена: 03.07.2025

Перед настройкой аутентификации через LDAP необходимо импортировать одного или нескольких пользователей из LDAP-каталога.

Настройка в Docker-образе

Мы подготовили пример файла конфигурации для подключения к LDAP, по умолчанию он не активен.

Необходимо отредактировать файл /home/devprom/docker/apache2/ldap.conf и указать актуальные параметры подключения к вашему LDAP.

Затем, для подключения этой конфигурации, необходимо выполнить команды:

> docker exec -it alm-app bash
# a2dissite devprom
# a2ensite ldap
# exit
После переключения используемой конфигурации Apache, необходимо перезагрузить контейнер
> docker restart alm-app

Для аутентификации с использованием данного примера можно использовать следующие пары:

  • nobel/password
  • einstein/password

По умолчанию аутентификация работает по логину (атрибут uid в LDAP-каталоге). Чтобы реализовать аутентификацию по email, необходимо в конфигурационном файле /home/devprom/docker/apache2/ldap.conf отредактировать параметр:

AuthLDAPURL ldap://ldap.forumsys.com:389/dc=example,dc=com?mail??(objectClass=*)

между знаками вопроса указать mail (атрибут, отвечающий за хранение Email) вместо uid.

Устранение возможных проблем

В случае возникновения проблем с авторизацией необходимо отредактировать конфигурационный файл веб-приложения Apache, например, /etc/apache2/sites-available/ldap.conf и установить повышенный уровень логирования: LogLevel debug

Затем, необходимо перезапустить контейнер alm-app или сервис apache2, авторизоваться повторно и изучить проблему в логе /var/www/devprom/logs/error.log, возможно некорректно заданы параметры подключения к LDAP-каталогу.

Поддержка нескольких LDAP-каталогов

При использовании нескольких LDAP-каталогов, в которых хранится аутентификационная информация, необходимо немного изменить настройку - добавить несколько конфигураций в секциях AuthnProdiverAlias:

<AuthnProviderAlias ldap alpha>
    AuthLDAPURL "ldap://localhost:10389/ou=system?uid??(objectClass=*)"
    AuthLDAPBindDN "uid=admin,ou=system"
    AuthLDAPBindPassword "secret"
    AuthLDAPBindAuthoritative on
    AuthLDAPRemoteUserIsDN on
    LDAPReferrals Off
</AuthnProviderAlias>
    
<AuthnProviderAlias ldap beta>
    AuthLDAPBindDN "cn=read-only-admin,dc=example,dc=com"
    AuthLDAPBindPassword "password"
    AuthLDAPURL "ldap://ldap.forumsys.com:389/dc=example,dc=com?uid??(objectClass=*)"
    AuthLDAPBindAuthoritative on
    AuthLDAPRemoteUserIsDN on
    LDAPReferrals Off
</AuthnProviderAlias>
Включить использование дополнительной секции в директиве:
AuthFormProvider alpha beta anon

Использование NTLM, Kerberos

Для реализации встроенной аутентификации посредством протоколов NTLM или Kerberos выполните настройку Apache, как описано в этой инструкции.

Решения для поддержки процессов разработки Devprom Software