Аутентификация через LDAP
Эта интеграция работает только с локальным развертыванием. Интеграция с внешними IAM-провайдерами для SaaS-решений будет введена в начале 2024 года.
LDAP — это популярный протокол для поиска учетных записей пользователей на специальном сервере, таком как Active Directory или OpenLDAP. Если вы настроите ТестОпс для использования LDAP-сервера, пользователи смогут использовать свои существующие учетные данные без необходимости регистрировать новые учетные записи в самом ТестОпс.
Обратите внимание, что интеграция с LDAP-сервером не является самым простым методом аутентификации для настройки. Значительным фактором здесь является то, что протокол очень гибок в отношении используемых запросов и имен параметров. Разные LDAP-серверы могут иметь очень разные параметры, поэтому никогда не может быть простого примера «скопируй, вставь и запусти».
Пожалуйста, убедитесь, что вы хорошо понимаете, как настроен ваш LDAP-сервер, или проконсультируйтесь с коллегой, который это знает.
Как это работает
Диаграмма выше показывает шаги типичного успешного взаимодействия между пользователем, экземпляром ТестОпс и LDAP-сервером.
-
ТестОпс подключается к LDAP-серверу с использованием служебной учетной записи.
-
На странице входа пользователь вводит свои учетные данные: имя пользователя (или адрес электронной почты) и пароль.
В зависимости от конфигурации, ТестОпс может преобразовать имя пользователя в нижний регистр перед продолжением.
-
ТестОпс выполняет запрос LDAP, чтобы проверить, существует ли учетная запись с указанными учетными данными.
В зависимости от конфигурации для этого запроса могут использоваться либо фильтр поиска, либо шаблоны DN. Обратите внимание, что эти два варианта взаимоисключающие, и вы не должны настраивать одновременно и фильтр поиска, и шаблоны DN.
-
LDAP-сервер возвращает полные данные учетной записи, включая ее уникальный идентификатор (UID) и группы, к которым она принадлежит.
На этом этапе ТестОпс пытается загрузить ранее созданную внутреннюю учетную запись, соответствующую указанному UID. Если она не существует, ТестОпс создает ее на лету. Обратите внимание, что ТестОпс отключает локальную аутентификаци ю для учетной записи, т.е. вы не можете иметь учетную запись с разрешенными как стандартным, так и LDAP методами.
В зависимости от конфигурации, ТестОпс может или не может обновлять существующие учетные записи, чтобы соответствовать данным с LDAP-сервера. А именно, он может обновлять полное имя, электронную почту, изображение аватара и роли учетных записей.
-
ТестОпс перенаправляет пользователя на страницу, которую он хотел посетить, или на главную страницу.
Параметры
- Kubernetes
- Docker Compose
- DEB/RPM
Отредактируйте следующие параметры в файле values.yaml.
-
Подключение к LDAP-серверу
auth.ldap.enabled
— должно бытьtrue
.auth.ldap.url
— расположение LDAP-сервера.auth.ldap.auth.user
— запрос для загрузки служебной учетной записи.auth.ldap.auth.pass
— пароль служебной учетной записи.
-
Имена атрибутов LDAP
auth.ldap.uidAttribute
— имя атрибута, который хранит уникальный идентификатор каждого пользователя.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
— фильтр для поиска групп.
Отредактируйте следующие параметры в файле .env.
-
Подключение к LDAP-серверу
LDAP_URL
— расположение LDAP-сервера.LDAP_LOGIN_SA
— запрос для загрузки служебной учетной записи.LDAP_LOGIN_SA_PASS
— пароль служебной учетной записи.
-
Имена атрибутов LDAP
LDAP_UID_ATTRIBUTE
— имя атрибута, который хранит уникальный идентификатор каждого пользователя.LDAP_LOWERCASEUSERNAMES
— еслиtrue
, имя пользователя будет преобразовано в нижний регистр перед поиском.LDAP_GROUP_ROLE_ATTRIBUTE
— имя атрибута, который хранит роль каждой группы.LDAP_SYNC_ROLES
— еслиtrue
, ТестОпс будет перезагружать группы из LDAP при каждой попытке входа.
-
Сопоставление групп
LDAP_MAPPING_ROLE_USERS
— список ролей LDAP, разделенных запятыми, которые соответствуют роли «Пользователи» в ТестОпс.LDAP_MAPPING_ROLE_ADMINS
— список ролей LDAP, разделенных запятыми, которые соответствуют роли «Администраторы» в ТестОпс.LDAP_DEFAULT_ROLE
— роль ТестОпс, которая должна использоваться для пользователей LDAP, которые не принадлежат ни к «Пользователям», ни к «Администраторам». Допустимые значения: «ROLE_ADMIN», «ROLE_USER», «ROLE_GUEST».
-
Параметры поиска пользователей
LDAP_USER_SEARCH_BASE
— начальная точка для поиска пользователей.LDAP_USER_SEARCH_FILTER
— фильтр для поиска пользователей.
-
Параметры поиска групп
LDAP_GROUP_SEARCH_BASE
— начальная точка для поиска групп.LDAP_GROUP_SEARCH_FILTER
— фильтр для поиска групп.
Отредактируйте следующие параметры в файле /opt/testops/conf/testops.conf.
-
Общие параметры
ALLURE_LOGIN_PRIMARY
— должно быть «ldap».ALLURE_LOGIN_LDAP_ENABLED
— должно бытьtrue
.
-
Подключение к LDAP-серверу
ALLURE_LOGIN_LDAP_URL
— расположение LDAP-сервера.ALLURE_LOGIN_LDAP_USERDN
— запрос для загрузки служебной учетной записи.ALLURE_LOGIN_LDAP_PASSWORD
— пароль служебной учетной записи.
-
Имена атрибутов LDAP
ALLURE_LOGIN_LDAP_UIDATTRIBUTE
— имя атрибута, который хранит уникальный идентификатор каждого пользователя.ALLURE_LOGIN_LDAP_PASSWORDATTRIBUTE
— имя атрибута, который хранит пароль каждого пользователя.ALLURE_LOGIN_LDAP_LOWERCASEUSERNAMES
— еслиtrue
, имя пользователя будет преобразовано в нижний регистр перед поиском.ALLURE_LOGIN_LDAP_GROUPROLEATTRIBUTE
— имя атрибута, который хранит роль каждой группы.ALLURE_LOGIN_LDAP_SYNCROLES
— еслиtrue
, ТестОпс будет перезагружать группы из LDAP при каждой попытке входа.
-
Сопоставление групп
ALLURE_LOGIN_LDAP_GROUPAUTHORITIES_ROLEUSERGROUPS
— список ролей LDAP, разделенных запятыми, которые соответствуют роли «Пользователи» в ТестОпс.ALLURE_LOGIN_LDAP_GROUPAUTHORITIES_ROLEADMINGROUPS
— список ролей LDAP, разделенных запятыми, которые соответствуют роли «Администраторы» в ТестОпс.ALLURE_LOGIN_LDAP_DEFAULTROLE
— роль ТестОпс, которая должна использоваться для пользователей LDAP, которые не принадлежат ни к «Пользователям», ни к «Администраторам». Допустимые значения: «ROLE_ADMIN», «ROLE_USER», «ROLE_GUEST».
-
Параметры поиска пользователей
ALLURE_LOGIN_LDAP_USERSEARCHBASE
— начальная точка для поиска пользователей.ALLURE_LOGIN_LDAP_USERSEARCHFILTER
— фильтр для поиска пользователей.ALLURE_LOGIN_LDAP_USERDNPATTERNS
— список шаблонов, разделенных запятыми, для поиска пользователей.
-
Параметры поиска групп
ALLURE_LOGIN_LDAP_GROUPSEARCHBASE
— начальная точка для поиска групп.ALLURE_LOGIN_LDAP_GROUPSEARCHFILTER
— фильтр для поиска групп.
Примеры
- Kubernetes
LDAP_URL="ldaps://ldaps.space:636"
LDAP_USER_SEARCH_BASE="ou=People,dc=space"
LDAP_USER_SEARCH_FILTER="uid={0}"
LDAP_SYNC_ROLES=false
LDAP_GROUP_SEARCH_BASE="ou=group,dc=space"
LDAP_GROUP_SEARCH_FILTER="memberUid={1}"
LDAP_GROUP_ROLE_ATTRIBUTE=cn
LDAP_UID_ATTRIBUTE=uid
LDAP_MAPPING_ROLE_USERS=atousers,every_user_is_user
LDAP_MAPPING_ROLE_ADMINS=atoadmins,every_user_is_admin
# Default role, can be ROLE_GUEST/ROLE_USER/ROLE_ADMIN
LDAP_DEFAULT_ROLE=ROLE_GUEST
LDAP_LOGIN_SA="cn=admin,dc=space"
LDAP_LOGIN_SA_PASS=SeriviceAccountPassword_Here
ALLURE_LOGIN_PRIMARY=ldap
ALLURE_LOGIN_LDAP_ENABLED='true'
ALLURE_LOGIN_LDAP_REFERRAL=follow
ALLURE_LOGIN_LDAP_URL=ldap://ldap.url.here:port
# ALLURE_LOGIN_LDAP_USERDNPATTERNS= do not use with ALLURE_LOGIN_LDAP_USERSEARCHFILTER
ALLURE_LOGIN_LDAP_USERSEARCHBASE="ou=People,dc=space"
ALLURE_LOGIN_LDAP_USERSEARCHFILTER="uid={0}"
ALLURE_LOGIN_LDAP_DEFAULTROLE=${LDAP_DEFAULT_ROLE}
ALLURE_LOGIN_LDAP_UIDATTRIBUTE=uid
ALLURE_LOGIN_LDAP_SYNCROLES='true'
# these are to be enabled if ALLURE_LOGIN_LDAP_SYNCROLES='true'
ALLURE_LOGIN_LDAP_GROUPSEARCHBASE="ou=group,dc=space"
ALLURE_LOGIN_LDAP_GROUPSEARCHFILTER="memberUid={1}"
ALLURE_LOGIN_LDAP_GROUPROLEATTRIBUTE=cn
ALLURE_LOGIN_LDAP_GROUPAUTHORITIES_ROLEUSERGROUPS=group_with_ato_users,every_user_is_user
ALLURE_LOGIN_LDAP_GROUPAUTHORITIES_ROLEADMINGROUPS=group_with_ato_admins,every_user_is_admin
# service account data to log-in to LDAP
ALLURE_LOGIN_LDAP_USERDN="cn=admin,dc=space"
ALLURE_LOGIN_LDAP_PASSWORD='ServiceAccountPasswordHere'
# additional parameters, can be disabled by default
#ALLURE_LOGIN_LDAP_LOWERCASEUSERNAMES=true
#ALLURE_LOGIN_LDAP_PASSWORDATTRIBUTE=userPassword
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))'
Аргументы соответствуют следующим параметрам конфигурации:
- Kubernetes
- Docker Compose
- DEB/RPM
- -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}
.
- -H —
LDAP_URL
, - -D —
LDAP_LOGIN_SA
, - -w —
LDAP_LOGIN_SA_PASS
, - -b —
LDAP_USER_SEARCH_BASE
, - запрос —
LDAP_USER_SEARCH_FILTER
илиLDAP_USER_DN_PATTERNS
с именем пользователя вместо{0}
.
- -H —
ALLURE_LOGIN_LDAP_URL
, - -D —
ALLURE_LOGIN_LDAP_USERDN
, - -w —
ALLURE_LOGIN_LDAP_PASSWORD
, - -b —
ALLURE_LOGIN_LDAP_USERSEARCHBASE
, - запрос —
ALLURE_LOGIN_LDAP_USERSEARCHFILTER
илиALLURE_LOGIN_LDAP_USERDNPATTERNS
с именем пользователя вместо{0}
.
Использование LDAP вместе со стандартной аутентификацией
Обычно, когда компания настраивает аутентификацию LDAP для ТестОпс, этот сервер считается источником истины о учетных записях пользователей, и LDAP устанавливается как основной способ аутентификации. Однако могут возникнуть ситуации, когда вам нужно использовать локальную аутентификацию, например, когда вы хотите войти как администратор экземпляра. Для таких случаев ТестОпс позволяет использовать систем ную аутентификацию, когда LDAP включен как основной способ аутентификации.
- Страница /login использует метод аутентификации, установленный как
primary
в настройках, который, скорее всего, будет LDAP, так как вы читаете эту страницу, - Страница /login/system всегда использует системную аутентификацию.
Чтобы войти как администратор экземпляра, перейдите на http(s)://allure-url/login/system и используйте учетные данные локального пользователя.
Устранение неполадок
Если вы получаете ошибку "Request failed with status code 401" при попытке входа с использованием LDAP, проверьте следующее:
- Убедитесь, что URL LDAP, указанный в файле конфигурации, правильный.
- Убедитесь, что вы используете действительный SSL-сертификат.
- Проверьте, что учетные данные, указанные в файле конфигурации (такие как LDAP_LOGIN_SA и LDAP_LOGIN_SA_PASS), правильные и не содержат пробела в конце.