Авторизация через LDAP
DoQA умеет проверять пароли пользователей в LDAP-каталоге, в том числе в Active Directory. Когда интеграция включена, локальные пароли DoQA не проверяются: все пользователи входят по учётным данным из каталога.
Параметры LDAP_* не входят в поставляемый шаблон .env — добавьте нужные строки вручную. После правки перезапустите приложение: ./doqa stop && ./doqa start.
Кто сможет войти
Зависит от того, включено ли автоматическое создание пользователей (JIT):
- JIT выключен (по умолчанию) — войти смогут только те, кто уже заведён в DoQA и завершил регистрацию. Email пользователя в DoQA должен совпадать с атрибутом
mailего записи в каталоге. Пользователи, которых нет в каталоге, войти не смогут. - JIT включён — заводить пользователей заранее не нужно, они создаются при первом входе. См. Автоматическое создание пользователей.
Изменения обратимы: чтобы вернуть обычный вход по паролю DoQA, выключите LDAP_ENABLED и перезапустите приложение.
Настройка
- Добавьте в
.envпараметры подключения:
LDAP_ENABLED=true
LDAP_HOST=ldap.company.ru
LDAP_PORT=389
LDAP_USERNAME="cn=admin,dc=doqa,dc=app"
LDAP_PASSWORD="password"
LDAP_BASE_DN="dc=doqa,dc=app"
LDAP_ENCRYPTION=false
| Параметр | Описание |
|---|---|
LDAP_ENABLED | Включает проверку паролей в LDAP. По умолчанию false. |
LDAP_HOST | Хост или IP-адрес LDAP-сервера. |
LDAP_PORT | Порт сервера. Обычно 389, для LDAPS — 636. |
LDAP_USERNAME | DN технической учётной записи. Ей нужны права на подключение, поиск записей и чтение атрибутов, перечисленных ниже. |
LDAP_PASSWORD | Пароль технической учётной записи. |
LDAP_BASE_DN | DN, внутри которого идёт поиск пользователей. |
LDAP_ENCRYPTION | false — без шифрования (по умолчанию), ssl — подключение по LDAPS. Любое другое значение равносильно false. |
LDAP_TLS_CACERTFILE | Путь к сертификату CA внутри контейнера. Нужен при LDAP_ENCRYPTION=ssl, если сертификат сервера выпущен корпоративным центром сертификации. |
LDAP_TLS_CERTFILE | Путь к клиентскому сертификату внутри контейнера, если сервер его требует. |
Шифрование не включается «по умолчанию»
LDAPS включается только при точном значении LDAP_ENCRYPTION=ssl. Пустое значение, false или опечатка означают подключение без шифрования — пароли пойдут по сети открытым текстом, и никакой ошибки при этом не будет. Проверьте значение явно.
Файлы сертификатов должны быть видны изнутри контейнера приложения: положите их в каталог, который уже смонтирован в контейнер, и укажите путь так, как его видит контейнер — например, /var/www/public/company-ca.crt.
Убедитесь, что у учётных записей в каталоге заполнен атрибут
mail: по нему DoQA находит пользователя, и его значение должно совпадать с email пользователя в DoQA.На странице авторизации DoQA введите email и пароль из LDAP.
Маппинг атрибутов
Если в вашем каталоге атрибуты называются иначе, переопределите их. Все параметры необязательные, имена атрибутов указывайте строчными буквами.
| Параметр | По умолчанию | Описание |
|---|---|---|
LDAP_ATTR_EMAIL | mail | Атрибут с адресом почты. По нему же выполняется поиск пользователя в каталоге. |
LDAP_ATTR_FIRST_NAME | givenname | Имя. |
LDAP_ATTR_LAST_NAME | sn | Фамилия. |
LDAP_ATTR_UID | пусто | Неизменяемый идентификатор записи: entryuuid в OpenLDAP, objectguid в Active Directory. Если не задан, вместо него используется DN — тогда переименование или перенос записи в каталоге разорвёт связь с пользователем DoQA. |
Автоматическое создание пользователей (JIT)
Пользователь, которого в DoQA ещё нет, может создаваться при первом входе. Управляют этим те же параметры, что и для корпоративного входа (SSO), — отдельного флага для LDAP нет:
SSO_JIT_ENABLED=true
SSO_JIT_MODE=domain_allowlist
SSO_JIT_ALLOWED_DOMAINS=company.ru
Пользователь создаётся, только если пароль подтверждён LDAP-сервером и домен email проходит проверку SSO_JIT_MODE. Новый пользователь получает роль «просмотр», не занимает место в лицензии и не имеет локального пароля; права выдаёт администратор внутри DoQA. Подробно — в разделе Автоматическое создание пользователей (JIT).
Диагностика
Все неудачные попытки входа возвращают пользователю одну и ту же ошибку авторизации: не удалось подключиться к серверу, не найдена запись, не подошёл пароль — сообщение одинаковое. Причину смотрите в логах приложения:
docker compose logs -f api