Аутентификация через SAML 2.0
Важно
ТестОпс поддерживает только SAML версии 2.0.
Аутентификация через SAML доступна только в серверной версии ТестОпс.
SAML — открытый стандарт обмена аутентификационными данными между провайдером учетных записей (Identity Provider, IdP) и основным сервисом (Service Provider, SP). Если вы настроите SAML-интеграцию для ТестОпс, пользователи смогут использовать существующие в IdP учетные записи для входа в ТестОпс.
Как это работает
В основе SAML лежит общение сервиса (в данном случае ТестОпс) с IdP (например, Okta и Keycloak) с помощью HTTP-перенаправлений:
- Пользователь пытается открыть страницу ТестОпс.
- Если пользователь не аутентифицирован, ТестОпс предлагает использовать SAML для аутентификации. Для этого пользователю нужно нажать кнопку с названием IdP.
- Когда пользователь нажимает кнопку, ТестОпс формирует SAML-запрос (SAML request) и перенаправляет браузер пользователя с этой информацией на страницу IdP.
- Пользователь вводит учетные данные на странице IdP.
- IdP формирует SAML-ответ (SAML assertion), содержащий информацию, которая необходима ТестОпс для аутентификации пользователя, и перенаправляет браузер пользователя на специальную страницу ТестОпс.
- ТестОпс аутентифицирует пользователя на основе информации из SAML-ответа.
SAML может также использоваться без SAML-запросов. Например, пользователь может сначала зайти на страницу IdP и после аутентификации нажать кнопку перехода в ТестОпс.
Настройка
Отредактируйте параметры в файле values.yaml:
общие параметры:
network.tls.enabled
— должно быть true;auth.primary
— должно быть saml2.
подключение к IdP:
auth.saml.enabled
— должно быть true;auth.saml.id
— название IdP. Будет использоваться в URL-адресах и на кнопке входа. Не используйте пробелы и специальные символы;auth.saml.entityId
— https://<домен>/api/login/saml2/authenticate/{registrationId}, где <домен> — домен вашего инстанса ТестОпс;auth.saml.acsUrl
— https://<домен>/api/login/saml2/sso/{registrationId}, где <домен> — домен вашего инстанса ТестОпс;auth.saml.identityProviderMetadataUri
— URL-адрес файла metadata.xml на сервере IdP.
названия атрибутов SAML:
auth.saml.firstNameAttribute
— название атрибута, содержащего имя пользователя;auth.saml.lastNameAttribute
— название атрибута, содержащего фамилию пользователя;auth.saml.emailAttribute
— название атрибута, содержащего электронную почту пользователя;auth.saml.groups.groupRoleAttribute
— название атрибута, содержащего названия групп пользователя.
сопоставление групп:
auth.saml.syncRoles
— если true, ТестОпс будет назначать пользователям роли в соответствии с их группами в IdP;auth.saml.groups.roleUserGroups
— список групп IdP, разделенных запятыми, которые соответствуют роли «Пользователь» в ТестОпс;auth.saml.groups.roleAdminGroups
— список групп IdP, разделенных запятыми, которые соответствуют роли «Администратор» в ТестОпс;auth.defaultRole
— роль нового пользователя по умолчанию.Допустимые значения: ROLE_ADMIN, ROLE_USER, ROLE_GUEST.
При
auth.saml.syncRoles: true
этот параметр должен иметь значение ROLE_GUEST.
Примеры
yaml
network:
...
tls:
enabled: true
auth:
primary: saml2
defaultRole: ROLE_GUEST
saml:
enabled: true
id: "testsaml"
entityId: https://<ваш домен ТестОпс>/api/login/saml2/authenticate/{registrationId}
acsUrl: https://<ваш домен ТестОпс>/api/login/saml2/sso/{registrationId}
identityProviderMetadataUri: https://адрес/файла/metadata.xml
syncRoles: false
firstNameAttribute: firstNameAttribute
lastNameAttribute: lastNameAttribute
emailAttribute: emailAttribute
groups:
groupRoleAttribute: groupRoleAttribute
roleUserGroups: testops_users
roleAdminGroups: testops_admins
Использование SAML вместе со стандартной аутентификацией
Как правило, когда компания настраивает аутентификацию SAML для ТестОпс, указанный IdP считается первоисточником данных об учетных записях пользователей и SAML устанавливается как основной способ аутентификации. Однако могут возникнуть ситуации, когда вам нужно использовать локальную аутентификацию, например, когда вы хотите войти как администратор инстанса. Для таких случаев ТестОпс позволяет использовать системную аутентификацию, когда SAML включен как основной способ аутентификации:
- Страница
/login
использует метод аутентификации, установленный в настройках какprimary
. Для данной инструкции это SAML. - Страница
/login/system
всегда использует системную аутентификацию.
Чтобы войти как администратор инстанса, перейдите на https://<URL>/login/system
и используйте учетные данные локального пользователя.