Аутентификация через OpenID Connect с Okta
OIDC — протокол аутентификации, основанный на OAuth 2.0. Если вы настроите OIDC-интеграцию с Okta для инстанса серверной версии ТестОпс, пользователи смогут использовать учетные записи Okta для входа в ТестОпс.
Примечание
Чтобы настроить аутентификацию через OIDC с Okta, вам необходимы:
- права администратора инстанса Okta;
- доступ к конфигурационным файлам ТестОпс;
- доступ к ТестОпс и Okta по протоколу HTTPS.
Принцип работы аутентификации через OIDC с Okta
- Пользователь открывает страницу входа в ТестОпс.
- ТестОпс перенаправляет пользователя на страницу аутентификации Okta.
- Пользователь вводит учетные данные на странице Okta.
- После успешной аутентификации Okta возвращает токен доступаЦифровой ключ, который подтверждает права пользователя или приложения на доступ к защищенным ресурсам с информацией о пользователе.
- ТестОпс аутентифицирует пользователя на основе данных из токена.
Настройка аутентификации через Okta
Чтобы настроить аутентификацию в ТестОпс через OIDC с Okta:
- Создайте OIDC-приложение для ТестОпс в Okta.
- Получите OIDC-эндпоинты из настроек Okta.
- Получите учетные данные приложения в Okta.
- Измените конфигурационные файлы ТестОпс.
- Настройте маппинг ролей между Okta и ТестОпс (при необходимости).
1. Создайте OIDC-приложение для ТестОпс в Okta
Перейдите в консоль администратора Okta.
В сайдбаре слева перейдите в раздел Applications → Applications.
Нажмите Create App Integration.
Заполните поля:
- Sign-in method — выберите OIDC - OpenID Connect;
- Application type — выберите Web Application.
Нажмите Next.
Заполните поля:
App integration name — введите название приложения (например, testops);
Grant type — убедитесь, что включен Authorization Code;
Sign-in redirect URIs — введите URI перенаправления в зависимости от вашего типа развертывания ТестОпс:
- для Kubernetes — https://<домен_инстанса_ТестОпс>/login/oauth2/code/okta (например, https://testops.example.com/login/oauth2/code/okta);
- для Docker Compose или DEB/RPM-пакетов — https://<домен_инстанса_ТестОпс>/login/oauth2/code/openid (например, https://testops.example.com/login/oauth2/code/openid);
Sign-out redirect URIs — оставьте пустым или укажите URL-адрес страницы входа в ТестОпс;
Controlled access — выберите, кому разрешен доступ к приложению.
Нажмите Save.
Созданное приложение будет выступать в роли OIDC-клиента для ТестОпс — через него пользователи Okta смогут аутентифицироваться в ТестОпс.
2. Получите OIDC-эндпоинты из настроек Okta
В сайдбаре слева перейдите в раздел Security → API.
Перейдите на вкладку Authorization Servers.
Напротив названия нужного сервера авторизации скопируйте URI в буфер обмена.
Откройте скопированный URI в браузере.
Откроется файл в формате JSON, который содержит все эндпоинты вашего инстанса Okta.
Скопируйте и сохраните значения полей:
authorization_endpoint,token_endpoint,jwks_uri,userinfo_endpoint.
Они понадобятся для настройки интеграции с Okta в конфигурационных файлах ТестОпс.
3. Получите учетные данные приложения в Okta
3.1. Получите ID приложения в Okta
В карточке созданного приложения перейдите на вкладку General.
В секции Client Credentials напротив поля Client ID нажмите Copy to clipboard, чтобы скопировать ID приложения в буфер обмена.
Сохраните идентификатор в безопасном месте, он понадобится для настройки интеграции с Okta в конфигурационных файлах ТестОпс.
3.2. Получите секрет приложения в Okta
В карточке созданного приложения перейдите на вкладку General.
В секции Client Credentials в поле CLIENT SECRETS нажмите Copy to clipboard, чтобы скопировать секрет приложения в буфер обмена.
Сохраните секрет в безопасном месте, он понадобится для настройки интеграции с Okta в конфигурационных файлах ТестОпс.
4. Измените конфигурационные файлы ТестОпс
Измените конфигурационные файлы ТестОпс в зависимости от вашего типа развертывания:
Измените параметры в файле values.yaml:
общие параметры:
auth.primary— введите openid, чтобы установить OIDC в качестве основного метода аутентификации;auth.openid.defaultRole— введите глобальную роль ТестОпс по умолчанию, которая будет назначена новым пользователям из Okta. Рекомендуется указать ROLE_GUEST — глобальную роль «Гость», чтобы контролировать использование мест в основной лицензии.Примечание
Если значение параметра
auth.openid.defaultRoleне указано, по умолчанию используется ROLE_GUEST.
подключение к Okta:
auth.openid.enabled— введите true, чтобы включить OIDC-аутентификацию;auth.openid.clientName— введите название приложения (значение поля App integration name из шага 1);auth.openid.clientId— введите уникальный идентификатор приложения (значение поля Client ID из шага 3). Okta использует этот идентификатор для проверки запросов от ТестОпс;auth.openid.providerName— введите okta. Это значение отображается на кнопке входа в ТестОпс и используется в URI перенаправления;auth.openid.clientSecret— введите секрет приложения, который вы сохранили на шаге 3. Okta использует этот секрет для аутентификации запросов от ТестОпс;auth.openid.redirectUri— введите https://<домен_инстанса_ТестОпс>/login/oauth2/code/okta. Okta перенаправляет пользователя на этот адрес после успешной аутентификации;auth.openid.scope— убедитесь, что указан список openid, email, profile. Он определяет, какие данные пользователя ТестОпс запрашивает у Okta;auth.openid.authorizationGrantType— убедитесь, что указано значение authorization_code;auth.openid.authorizationUri— введите значение поляauthorization_endpoint, которое вы сохранили на шаге 2. ТестОпс перенаправляет пользователя на этот адрес для аутентификации;auth.openid.jwksSetUri— введите значение поляjwks_uri, которое вы сохранили на шаге 2. ТестОпс использует этот адрес для проверки подписи токенов;auth.openid.tokenUri— введите значение поляtoken_endpoint, которое вы сохранили на шаге 2. ТестОпс использует этот адрес для получения токена доступа;auth.openid.userinfoUri— введите значение поляuserinfo_endpoint, которое вы сохранили на шаге 2. ТестОпс использует этот адрес для получения данных о пользователе;auth.openid.usernameAttribute— убедитесь, что указано значение preferred_username. Этот параметр из токена используется как имя пользователя в ТестОпс.
5. Настройте маппинг ролей между Okta и ТестОпс
При необходимости вы можете настроить маппинг ролей между Okta и ТестОпс, который укажет, какие глобальные роли ТестОпс должны получить группы пользователей из Okta.
Маппинг ролей позволяет контролировать использование мест в основной лицензии ТестОпс, предотвращать несанкционированный доступ к проектам ТестОпс и централизованно управлять правами пользователей из Okta.
5.1. Создайте группы в Okta
Перейдите в консоль администратора Okta.
В сайдбаре слева перейдите в раздел Directory → Groups.
Создайте две группы Okta для маппинга с глобальными ролями ТестОпс «Администратор» и «Пользователь». Чтобы создать каждую из этих групп:
Нажмите Add group.
Заполните поля:
- Name — введите название группы (например, to_admins для глобальной роли «Администратор» и to_users для глобальной роли «Пользователь»);
- Description — введите описание группы.
Нажмите Save.
5.2. Добавьте пользователей в группы Okta
- В карточке созданной группы нажмите Assign people.
- Напротив нужных пользователей нажмите
+.
5.3. Назначьте группы приложению Okta
- В сайдбаре слева перейдите в раздел Applications → Applications.
- Откройте карточку приложения, которое вы создали на шаге 1.
- Перейдите на вкладку Assignments.
- Нажмите Assign → Assign to Groups.
- Нажмите Assign напротив групп, которые вы создали на шаге 5.1.
- Нажмите Done.
5.4. Добавьте информацию о группах в токен из Okta
В сайдбаре слева перейдите в раздел Security → API.
Нажмите на название сервера авторизации, который использует ваше приложение.
Перейдите на вкладку Claims.
Нажмите Add Claim.
Заполните поля:
- Name — введите groups;
- Include in token type — нажмите на выпадающий список и выберите ID Token, в дополнительном поле справа нажмите на выпадающий список и выберите Always;
- Value type — нажмите на выпадающий список и выберите Groups;
- Filter — нажмите на выпадающий список и выберите Matches regex и введите .*, чтобы включить все группы, назначенные приложению, или укажите регулярное выражение для нужных групп.
Нажмите Create.
5.5. Настройте маппинг ролей в конфигурационных файлах ТестОпс
Измените параметры маппинга ролей в конфигурационных файлах ТестОпс в зависимости от вашего типа развертывания:
Измените параметры в файле values.yaml:
auth.openid.syncRoles— введите true, чтобы включить маппинг ролей между Okta и ТестОпс;auth.openid.groupRoleAttribute— введите groups (значение поля Name из шага 5.4);auth.openid.roleUserGroups— введите название группы Okta из шага 5.1, участники которой получат глобальную роль «Пользователь» в ТестОпс (например, to_users);auth.openid.roleAdminGroups— введите название группы Okta из шага 5.1, участники которой получат глобальную роль «Администратор» в ТестОпс (например, to_admins).
Важно
Синхронизация ролей будет работать правильно только в случае, если параметр auth.openid.defaultRole из шага 4 имеет значение ROLE_GUEST.
Примеры настроенных конфигурационных файлов ТестОпс для OIDC с Okta
yaml
auth:
primary: openid
defaultRole: ROLE_GUEST
openid:
enabled: true
clientName: testops
clientId: 0oa1bc2de3fGhI4j5k6l
clientSecret: Swi6lI8IpwSilx0WkmOx
providerName: okta
redirectUri: https://testops.example.com/login/oauth2/code/okta
scope: openid, email, profile
authorizationGrantType: authorization_code
authorizationUri: https://example.okta.com/oauth2/default/v1/authorize
jwksSetUri: https://example.okta.com/oauth2/default/v1/keys
tokenUri: https://example.okta.com/oauth2/default/v1/token
userinfoUri: https://example.okta.com/oauth2/default/v1/userinfo
usernameAttribute: preferred_username
defaultRole: ROLE_GUEST
syncRoles: true
groupRoleAttribute: groups
roleUserGroups: to_users
roleAdminGroups: to_adminsИспользование OIDC вместе с локальной аутентификацией ТестОпс
Если OIDC указан как основной способ аутентификации в ТестОпс, при необходимости вы также можете использовать локальную аутентификацию:
- Страница https://<домен_инстанса_ТестОпс>/login использует метод аутентификации, указанный в конфигурационных файлах ТестОпс в параметре
primaryилиALLURE_LOGIN_PRIMARY. Для данной инструкции это OIDC. - Страница https://<домен_инстанса_ТестОпс>/login/system использует локальную аутентификацию ТестОпс.
Чтобы войти в ТестОпс, например, с глобальной ролью «Администратор», перейдите на https://<домен_инстанса_ТестОпс>/login/system и используйте учетные данные локального пользователя.

