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

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

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

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

> docker exec -it alm-app bash
# a2dissite devprom
# a2ensite ldap

Если вы хотите использовать подключение к приложению по HTTPS, то используйте другой конфигурационный файл, который также нужно предварительно настроить

# a2ensite ldap.ssl

После переключения используемой конфигурации Apache, необходимо перезагрузить контейнер

> docker restart alm-app

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

  • nobel/password
  • einstein/password

По умолчанию аутентификация работает по логину (атрибут uid в LDAP-каталоге). Чтобы реализовать аутентификацию по email, необходимо в конфигурационном файле ldap.conf (или ldap.ssl.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