Аутентификация через LDAP
Важно
Аутентификация через LDAP доступна только в серверной версии ТестОпс.
LDAP — популярный протокол для поиска учетных записей пользователей на специальном сервере, таком как Active Directory или OpenLDAP. Если вы настроите ТестОпс для с работы с LDAP-сервером, пользователи смогут использовать свои существующие учетные записи и не регистрировать новые в самом ТестОпс.
Важно
Пожалуйста, обратите внимание, что настройка интеграции с LDAP-сервером — сложный процесс. Протокол поддерживает широкий диапазон запросов и имен параметров, что приводит к значительным различиям между серверами. Поэтому универсального примера конфигурации не существует.
Перед настройкой убедитесь, что вы хорошо понимаете параметры вашего LDAP-сервера, или проконсультируйтесь с коллегой, знакомым с его конфигурацией.
Как это работает
ТестОпс устанавливает соединение с LDAP-сервером, используя служебную учетную запись.
На странице входа пользователь вводит свои учетные данные: имя пользователя (или адрес электронной почты) и пароль.
В зависимости от конфигурации ТестОпс может преобразовать имя пользователя в нижний регистр.
ТестОпс выполняет запрос к LDAP-серверу, чтобы определить, существует ли указанная учетная запись.
В зависимости от конфигурации для этого запроса могут использоваться либо фильтр поиска, либо шаблоны DN. Обратите внимание, что эти два варианта взаимоисключающие и вы не должны настраивать их одновременно.
Если учетная запись найдена, LDAP-сервер передает ТестОпс ее данные, включая уникальный идентификатор (UID) и группы, к которым запись принадлежит. ТестОпс ищет внутреннюю учетную запись, соответствующую указанному UID. Если ее нет, создается новая.
Совет
Обратите внимание, что ТестОпс отключит локальную аутентификацию для учетной записи, т. е. вы не можете иметь учетную запись с разрешенными как LDAP-, так и стандартным методами.
В зависимости от конфигурации ТестОпс может или не может обновлять существующие учетные записи (имя, электронную почту, изображение аватара и роли учетных записей), чтобы соответствовать данным с LDAP-сервера.
После успешной аутентификации ТестОпс перенаправляет пользователя на целевую или главную страницу.
Параметры
Отредактируйте параметры в файле values.yaml:
подключение к LDAP-серверу:
auth.ldap.enabled
— должно бытьtrue
;auth.ldap.url
— расположение LDAP-сервера;auth.ldap.auth.user
— запрос для загрузки служебной учетной записи;auth.ldap.auth.pass
— пароль служебной учетной записи.
имена атрибутов LDAP:
auth.ldap.uidAttribute
— имя атрибута, который хранит UID каждого пользователя;auth.ldap.passwordAttribute
— имя атрибута, который хранит пароль каждого пользователя;auth.ldap.usernamesToLowercase
— еслиtrue
, имя пользователя будет преобразовано в нижний регистр перед поиском;auth.ldap.group.roleAttribute
— имя атрибута, который хранит роль каждой группы;auth.ldap.syncRoles
— еслиtrue
, ТестОпс будет перезагружать группы из LDAP при каждой попытке входа.
сопоставление групп:
auth.ldap.userGroupName
— список ролей LDAP, разделенных запятыми, которые соответствуют роли «Пользователь» в ТестОпс;auth.ldap.adminGroupName
— список ролей LDAP, разделенных запятыми, которые соответствуют роли «Администратор» в ТестОпс;allure.auth.defaultRole
— роль ТестОпс, которая должна использоваться для пользователей LDAP, которые не принадлежат ролям «Пользователь» и «Администратор». Допустимые значения:ROLE_ADMIN
,ROLE_USER
,ROLE_GUEST
.
параметры поиска пользователей:
auth.ldap.user.searchBase
— начальная точка для поиска пользователей;auth.ldap.user.searchFilter
— фильтр для поиска пользователей;auth.ldap.user.dnPatterns
— список шаблонов, разделенных запятыми, для поиска пользователей.
параметры поиска групп:
auth.ldap.group.searchBase
— начальная точка для поиска групп;auth.ldap.group.searchFilter
— фильтр для поиска групп.
Примеры
yaml
auth:
primary: ldap
defaultRole: ROLE_GUEST
ldap:
enabled: false
auth:
user: user
pass: SecretPaSSw0rd
referral: follow
url: ldap://ldap.example.com:389
usernamesToLowercase: false
passwordAttribute: userPassword
user:
dnPatterns: ""
searchBase: dc=example,dc=com
searchFilter: (&((objectClass=Person))(uid={0}))
syncRoles: false
uidAttribute: uid
group:
searchBase: ou=qa,ou=Security Groups,dc=example,dc=com
searchFilter: (&(objectClass=Person)(uid={1}))
roleAttribute: cn
userGroupName: allure_users
adminGroupName: allure_admins
Тестирование с помощью ldapsearch
Перед перезапуском ТестОпс с новыми параметрами настоятельно рекомендуем проверить их вручную с помощью утилиты ldapsearch. В зависимости от операционной системы утилита может входить в состав пакетов ldap-utils или ldap-clients.
После установки утилиты попробуйте найти пользователя на LDAP-сервере по его UID:
sh
ldapsearch \
-H 'ldap://ldap.example.com:389' \
-D 'cn=admin,dc=example,dc=com' \
-w 'SecretPa$$w0rd' \
-b 'dc=example,dc=com' \
'(&((objectClass=Person))(uid=ivanivanov))'
Аргументы соответствуют следующим параметрам конфигурации:
- -H —
auth.ldap.url
, - -D —
auth.ldap.auth.user
, - -w —
auth.ldap.auth.pass
, - -b —
auth.ldap.user.searchBase
, - запрос —
auth.ldap.user.searchFilter
илиauth.ldap.user.dnPatterns
с именем пользователя вместо{0}
.
Использование LDAP вместе со стандартной аутентификацией
Как правило, когда компания настраивает аутентификацию LDAP для ТестОпс, LDAP-сервер считается первоисточником данных об учетных записях пользователей и LDAP устанавливается как основной способ аутентификации. Однако могут возникнуть ситуации, когда вам нужно использовать локальную аутентификацию, например, когда вы хотите войти как администратор инстанса. Для таких случаев ТестОпс позволяет использовать системную аутентификацию, когда LDAP включен как основной способ аутентификации:
- Страница
/login
использует метод аутентификации, установленный в настройках какprimary
. Для данной инструкции это LDAP. - Страница
/login/system
всегда использует системную аутентификацию.
Чтобы войти как администратор инстанса, перейдите на https://<URL>/login/system
и используйте учетные данные локального пользователя.
Устранение неполадок
Если вы получаете ошибку "Request failed with status code 401" при попытке входа с использованием LDAP, проверьте следующее:
- Убедитесь, что URL-адрес LDAP-сервера, указанный в файле конфигурации, правильный.
- Убедитесь, что вы используете действительный SSL-сертификат.
- Проверьте, что учетные данные, указанные в файле конфигурации, правильные и не содержат пробела в конце (например, для Docker Compose это
LDAP_LOGIN_SA
иLDAP_LOGIN_SA_PASS
).