Авторизация через LDAP
Настройка в Docker-образе
Мы подготовили пример файла конфигурации для подключения к LDAP (необходимо отредактировать файл и указать актуальные параметры подключения к вашему LDAP). Для подключения этой конфигурации необходимо выполнить команды:
> docker exec -it alm-app bash
# a2dissite devprom
# a2ensite ldap
# exit
> docker restart alm-app
Для аутентификации с использованием данного примера, можно использовать следующие пары:
- nobel/password
- einstein/password
Устранение возможных проблем
В случае возникновения проблем с авторизацией необходимо отредактировать конфигурационный файл веб-приложения Apache, например, /etc/apache2/sites-available/ldap.conf и установить повышенный уровень логирования: LogLevel debug
Затем, необходимо перезапустить контейнер alm-app или сервис apache2, авторизоваться повторно и изучить проблему в логе /var/www/devprom/logs/error.log, возможно некорректно заданы параметры подключения к LDAP-каталогу.
Поддержка нескольких LDAP-каталогов
При использовании нескольких LDAP-каталогов, в которых хранится аутентификационная информация, необходимо немного изменить настройку:
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule session_module modules/mod_session.so
LoadModule session_cookie_module modules/mod_session_cookie.so
LoadModule request_module modules/mod_request.so
LoadModule auth_form_module modules/mod_auth_form.so
LoadModule session_crypto_module modules/mod_session_crypto.so
<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>
<VirtualHost *:80>
DocumentRoot /var/www/devprom/htdocs
Timeout 600
KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 150
ErrorDocument 404 app/front.php
ErrorDocument 500 app/front.php
Session On
SessionEnv On
SessionCookieName session path=/
SessionCryptoPassphrase secret
ErrorDocument 401 /login
SetEnv no-auth 1
<Directory />
Options ExecCGI
AllowOverride All
AuthType form
AuthName realm
AuthFormProvider alpha beta anon
AuthFormAuthoritative off
AuthFormLoginRequiredLocation /login?redirect=%{REQUEST_URI}%{escape:?%{QUERY_STRING}}
AuthFormPassword pass
AuthFormUsername login
Anonymous_NoUserID off
Anonymous_MustGiveEmail off
Anonymous_VerifyEmail off
Anonymous_LogEmail off
Anonymous *
Require valid-user
</Directory>
<Location /auth>
SetHandler form-login-handler
AuthFormLoginSuccessLocation /logged
</Location>
<Location /logoff>
Session on
SessionMaxAge 1
SessionCookieName session path=/
</Location>
<LocationMatch "/(join-project|plugins|login|recovery|reset|404|50[\d]{1}|cache|scripts|images|img|favicon|app/non-auth|tasks)">
AuthType None
Require all granted
</LocationMatch>
<If "%{HTTP:Devprom-Auth-Key} != ''">
AllowOverride All
AuthType None
Require all granted
</If>
<Location /api>
AllowOverride All
AuthType None
Require all granted
</Location>
<Location /servicedesk>
AllowOverride All
AuthType None
Require all granted
</Location>
<Location /co/bundles/Devprom/ServiceDeskBundle/public>
AllowOverride All
AuthType None
Require all granted
</Location>
LogLevel error
</VirtualHost>
Использование NTLM, Kerberos
Для реализации встроенной аутентификации посредством протоколов NTLM или Kerberos выполните настройку Apache, как описано в этой инструкции.