SSO

Как настроить единый вход (SSO) через SAML2.

SSO

Единый вход (через SAML2) доступен только в OpenReplay Enterprise Edition.

Настройка поставщика удостоверений (IDP)

Section titled Настройка поставщика удостоверений (IDP)

В панели управления вашего поставщика удостоверений создайте новое приложение с именем openreplay (вы можете использовать эту иконку). На странице конфигурации обязательно задайте следующие значения (убедитесь, что вы заменили YOUR_DOMAIN на правильное значение, например https://openreplay.mycompany.com):

ПеременнаяЗначение
ACS URL (также называется Single Sign On URL или Consumer URL)YOUR_DOMAIN/api/sso/saml2/acs/
Entity ID (также называется Audience)YOUR_DOMAIN/api/sso/saml2/metadata/
Single Logout URL (также называется SLO URL)YOUR_DOMAIN/api/sso/saml2/sls/ (необязательно)
Name ID (иногда настраивается в разделе ‘Attribute Statements’ или ‘Parameters’)Email или EmailAddress или urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress, в зависимости от вашего поставщика удостоверений
SAML initiatorУстановите значение Service Provider (необязательно)

В разделе ‘Attribute Statements’ или ‘Parameters’ обязательно определите следующие поля:

ПолеЗначение
tenantKeyTENANT_KEY его значение можно найти в Dashboard, в разделе ‘Preferences’ > ‘Account’ (этот атрибут не следует добавлять, если вы используете наш план Cloud Dedicated)
firstNameuser.firstName
lastNameuser.lastName
internalIdВнутренний ID или user.email (ID пользователя в вашей системе управления удостоверениями) (необязательно)
groupsПредставляет роль и права администратора пользователя в OpenReplay; в зависимости от вашего поставщика удостоверений это может быть user.role или group и т. д. (необязательно, значение по умолчанию = member без прав администратора). Чтобы упростить управление ролями OpenReplay на стороне IdP, вы можете создать группу с именем OpenReplay-admin, в которую войдут пользователи с правами администратора, и группу с именем OpenReplay-member, в которую войдут пользователи с ролью ‘member’

Теперь у вас должны быть все необходимые значения для следующего шага/раздела.

Настройка SSO (SAML2)

Section titled Настройка SSO (SAML2)

Если вы используете наш план Cloud dedicated, перейдите в Console, затем щёлкните по экземпляру и задайте переменные в разделе SSO.

В противном случае, если вы используете нашу Enterprise Edition, выполните openreplay -e, раскомментируйте и затем обновите перечисленные ниже переменные окружения в разделе chalice:

ПеременнаяОписание
idp_entityIdentityId вашего поставщика удостоверений, также называемый Issuer URL
idp_sso_urlsingleSignOnService вашего поставщика удостоверений, также называемый SAML 2.0 Endpoint (HTTP)
idp_x509certx509cert, должен быть однострочной строкой без переносов строк. Вы можете использовать этот инструмент для форматирования вашего значения
idp_nameИмя поставщика удостоверений (необязательно)
idp_sls_urlsingleLogoutService вашего поставщика удостоверений, также называемый SLO Endpoint (HTTP) (необязательно)
enforce_SSOЕсли установлено значение true, все подключения с использованием имени пользователя и пароля будут заблокированы (необязательно, значение по умолчанию=false)
idp_group_prefixesПрефиксы имён групп IdP (необязательно, значение по умолчанию=OpenReplay-,or-)

Затем сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу:

Сертификат OpenReplay

Section titled Сертификат OpenReplay

Это необязательно, вы можете добавить сертификат x509 для дополнительной безопасности SSO:

  1. выполните эту команду на вашем сервере или на вашей защищённой машине (вы можете изменить срок действия вашего сертификата в соответствии с вашими потребностями):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout openreplay-sso.key -out openreplay-sso.crt
  1. На вашем сервере выполните openreplay -e
  2. В разделе chalice добавьте следующие переменные окружения:
  • sp_crt: должна быть однострочной строкой без переносов строк из сгенерированного файла ‘openreplay-sso.crt’ (вы можете использовать этот инструмент для форматирования вашего значения)
  • sp_key: должна быть однострочной строкой без переносов строк из сгенерированного файла ‘openreplay-sso.key’
  1. Сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу
  2. Добавьте сгенерированный файл ‘openreplay-sso.crt’ в конфигурацию приложения вашего поставщика удостоверений

Пример с использованием Okta

Section titled Пример с использованием Okta
  1. Войдите в панель администрирования Okta и перейдите в ‘Applications’ > ‘Applications’
  2. Нажмите ‘Create new app integration’, затем выберите SAML 2.0 и нажмите ‘Next’
  3. Установите ‘App Name’ в OpenReplay (вы можете загрузить эту иконку) для вашего приложения), затем нажмите ‘Next’
  4. Установите:
  • Single sign on URL в YOUR_DOMAIN/api/sso/saml2/acs/
  • Audience URI (SP Entity ID) в YOUR_DOMAIN/api/sso/saml2/metadata/
  • Name ID format в EmailAddress
  1. Нажмите Next, выберите ‘This is an internal app that we have created’, затем нажмите ‘Finish’
  2. На вкладке Sign On прокрутите вниз и нажмите ‘Show legacy configuration’, затем нажмите ‘Edit’
  3. Определите перечисленные ниже поля в ‘Profile Attribute Statements’:
  • tenantKey: формат Basic, установите значение в TENANT_KEY, которое находится в панели OpenReplay в разделе ‘Preferences’ > ‘Account’ (этот атрибут не следует добавлять, если вы используете наш план Cloud Dedicated)
  • firstName: формат Basic, установите значение в user.firstName
  • lastName: формат Basic, установите значение в user.lastName
  • internalId: формат Basic, установите значение в user.email
  1. Определите перечисленное ниже поле в ‘Group Attribute Statement’ (это необязательно):
  • groups: формат Basic, фильтр Match Regex, значение OpenReplay-* (или вы можете указать другой фильтр и регулярное выражение в соответствии с вашими потребностями)
  1. Нажмите ‘save’, прокрутите вверх вправо и нажмите ‘View Setup Instructions’, чтобы увидеть вашу конфигурацию SAML2

Если вы используете наш план Cloud dedicated, перейдите в Console, затем щёлкните по экземпляру и задайте переменные в разделе SSO.

В противном случае, если вы используете нашу Enterprise Edition:

  1. Подключитесь по SSH к вашей установке OpenReplay и выполните openreplay -e
  2. В разделе chalice раскомментируйте и затем установите следующие переменные окружения:
  • idp_entityId: Identity Provider Issuer
  • idp_sso_url: Identity Provider Single Sign-On URL
  • idp_x509cert: сертификат X.509, должен быть однострочной строкой без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
  • idp_name: Okta
  1. Наконец, сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу

Пример с использованием Azure Active Directory

Section titled Пример с использованием Azure Active Directory
  1. Войдите в ваш портал Azure и перейдите в ‘Azure Active Directory’
  2. Нажмите ’+ Add’, выберите ‘Enterprise application’, затем щёлкните ‘Create your own application’
  3. Установите ‘App Name’ в OpenReplay, затем выберите ‘Integrate any other application you don’t find in the gallery (Non-gallery)’ и нажмите ‘Create’
  4. Перейдите в ‘Single sign-on’ в левом меню и установите перечисленные ниже значения в блоке ‘Basic SAML Configuration’:
  • Identifier (Entity ID) в YOUR_DOMAIN/api/sso/saml2/metadata/
  • Reply URL (Assertion Consumer Service URL) в YOUR_DOMAIN/api/sso/saml2/acs/
  • Logout URL в YOUR_DOMAIN/api/sso/saml2/sls/
  1. Добавьте перечисленные ниже утверждения (claims) в блок ‘Attribute & Claims’ и убедитесь, что поле ‘Namespace’ оставлено пустым для каждого из них:
  • tenantKey: установите значение в TENANT_KEY, которое находится в панели OpenReplay в разделе ‘Preferences’ > ‘Account’ (этот атрибут/утверждение не следует добавлять, если вы используете наш план Cloud Dedicated)
  • firstName: установите значение в user.givenname
  • lastName: установите значение в user.surname
  • internalId: установите значение в user.mail
  1. Перейдите в ‘Users and groups’ и назначьте выбранных пользователей приложению

Если вы используете наш план Cloud dedicated, перейдите в Console, затем щёлкните по экземпляру и задайте переменные в разделе SSO (значения находятся в ‘Azure Active Directory’ > ‘OpenReplay’ > ‘Single sign-on’).

В противном случае, если вы используете нашу Enterprise Edition:

  1. Подключитесь по SSH к вашей установке OpenReplay и выполните openreplay -e
  2. В разделе chalice раскомментируйте и затем установите следующие переменные окружения (значения находятся в ‘Azure Active Directory’ > ‘OpenReplay’ > ‘Single sign-on’):
  • idp_entityId: Azure AD Identifier
  • idp_sso_url: Login URL
  • idp_sls_url: Logout URL
  • idp_x509cert: сертификат X.509, должен быть однострочной строкой без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
  • idp_name: Active Directory
  1. Наконец, сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу

Пример с использованием Google Workspace (ранее G Suite)

Section titled Пример с использованием Google Workspace (ранее G Suite)

Добавление пользовательских атрибутов:

Section titled Добавление пользовательских атрибутов:
  1. В консоли администратора Google перейдите в ‘Directory’ > ‘Users’ > ‘More options’ > ‘Manage custom attributes’.
  2. Нажмите ‘Add Custom Attribute’.
  3. Установите следующие поля:
  • Category: ‘OpenReplay’
  • Custom fields:
  • Name: ‘role’
  • Info type: ‘Text’
  • Visibility: ‘Visible to user and admin’
  • No. of values: ‘Single-value’
  • Custom fields:
  • Name: ‘adminPrivileges’
  • Info type: ‘Yes or No’
  • Visibility: ‘Visible to user and admin’
  • No. of values: ‘Single-value’
  1. Нажмите ‘Add’
  2. Чтобы добавить значения новым пользовательским атрибутам, перейдите в ‘Users’
  3. Выберите нужного пользователя (или пользователей)
  4. Нажмите ‘User information’, затем отредактируйте раздел ‘OpenReplay’
  5. Измените значение role на нужную роль в ‘OpenReplay’ (роль должна соответствовать роли, созданной в панели OpenReplay в разделе ‘Preferences’ > ‘Roles’)
  6. Измените значение adminPrivileges на ‘Yes’, если пользователю разрешено иметь права администратора в OpenReplay
  7. Нажмите ‘Save’
  1. Войдите в консоль администратора Google и перейдите в ‘Apps’
  2. Нажмите ‘Web and mobile apps’, затем щёлкните ‘Add app’ > ‘Add custom SAML app’
  3. Установите ‘App name’ в OpenReplay (вы можете загрузить эту иконку для ‘App icon”) затем нажмите ‘Continue’
  4. Скопируйте ‘SSO URL’, ‘Entity ID’ и ‘Certificate’, затем щёлкните ‘Continue’ (мы будем использовать эти значения на шаге 11)
  5. Установите:
  • ACS URL в YOUR_DOMAIN/api/sso/saml2/acs/TENANT_KEY/ (TENANT_KEY находится в панели OpenReplay в разделе ‘Preferences’ > ‘Account’, но если вы используете наш план Cloud Dedicated, оставьте значение tenantKey пустым)
  • Entity ID в YOUR_DOMAIN/api/sso/saml2/metadata/
  • Name ID format в Email
  • Name ID в Basic information > Primary Email
  1. Нажмите ‘Continue’, затем нажмите ‘Add Mapping’, чтобы добавить перечисленные ниже атрибуты:
  • Basic information > First Name -> firstName
  • Basic information > Last Name -> lastName
  • Basic information > Primary Email -> internalId
  • OpenReplay > groups -> groups
  1. Нажмите ‘Finish’
  2. В консоли администратора Google перейдите в ‘Apps’ > ‘Web and mobile apps’ и выберите ‘OpenReplay’
  3. Нажмите ‘User access’, выберите ‘ON for everyone’, затем нажмите ‘Save’

Если вы используете наш план Cloud dedicated, перейдите в Console, затем щёлкните по экземпляру и задайте переменные в разделе SSO.

В противном случае, если вы используете нашу Enterprise Edition:

  1. Подключитесь по SSH к вашей установке OpenReplay и выполните openreplay -e
  2. В разделе chalice > env раскомментируйте и установите следующие атрибуты, используя значения из шага 4:
  • idp_sso_url: вставьте значение ‘SSO URL’
  • idp_entityId: вставьте значение ‘Entity ID’
  • idp_x509cert: используйте этот инструмент для форматирования скопированного/загруженного сертификата
  • idp_name: установите значение в G-Suite
  • idp_tenantKey: TENANT_KEY находится в панели OpenReplay в разделе ‘Preferences’ > ‘Account’
  1. Наконец, сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу

Пример с использованием JumpCloud

Section titled Пример с использованием JumpCloud
  1. Войдите в панель администрирования JumpCloud и в левом меню перейдите в ‘SSO’
  2. Нажмите ’+ Add New Application’, затем выберите ‘Custom SAML App’
  3. Установите ‘Display Label’ в OpenReplay (вы можете загрузить эту иконку для вашего приложения), затем перейдите на вкладку ‘SSO’
  4. Установите:
  • IdP Entity ID в openreplay/TENANT_KEY (TENANT_KEY находится в панели OpenReplay в разделе ‘Preferences’ > ‘Account’, но если вы используете наш план Cloud Dedicated, оставьте значение tenantKey пустым)
  • SP Entity ID в YOUR_DOMAIN/api/sso/saml2/metadata/
  • ACS URL в YOUR_DOMAIN/api/sso/saml2/acs/
  • SAMLSubject NameID в email
  • SAMLSubject NameID Format: в urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
  • Signature Algorithm в RSA-SHA256
  • Отметьте Sign Assertion
  • IDP URL должен заканчиваться на openreplay-TENANT_KEY (это значение нельзя изменить позже; если вы используете наш план Cloud Dedicated, оставьте часть tenantKey пустой)
  1. Если вы следовали инструкциям из раздела Сертификат OpenReplay, вы можете загрузить сгенерированный файл ‘openreplay-sso.crt’, нажав ‘Upload SP Certificate’; в противном случае пропустите этот шаг
  2. Определите перечисленные ниже поля в ‘USER ATTRIBUTE MAPPING’, нажав кнопку ‘add attribute’:
  • firstName: установите значение в firstname
  • lastName: установите значение в lastname
  • internalId: установите значение в email
  • groups: необязательно, роль и права администратора пользователя в OpenReplay; если это постоянное значение для всех пользователей, вам следует определить его на следующем шаге, в противном случае вам нужно добавить новый строковый атрибут к группе JumpCloud, назвать его OpenReplay-groups и установить значение в имя роли, а затем в конфигурации SSO выбрать ‘Custom User or Group Attribute’ и установить значение в OpenReplay-groups.
  1. Определите перечисленные ниже поля в ‘CONSTANT ATTRIBUTES’, нажав кнопку ‘add attribute’:
  • tenantKey: установите значение в TENANT_KEY, которое находится в панели OpenReplay в разделе ‘Preferences’ > ‘Account’ (этот атрибут не следует добавлять, если вы используете наш план Cloud Dedicated)
  • groups: необязательно, пропустите, если определено на предыдущем шаге, роль и права администратора пользователя в OpenReplay, должно соответствовать имени роли, уже определённому в OpenReplay (значение по умолчанию = member без прав администратора)
  1. На этом этапе вы можете перейти на вкладку ‘User Groups’ и выбрать группу пользователей, которые будут иметь доступ к OpenReplay, или вы можете сделать это позже
  2. Нажмите ‘activate’ и ‘continue’ во всплывающем окне подтверждения
  3. Нажмите иконку нового приложения OpenReplay, затем в левом раскрывающемся меню ‘IDP Certificate Valid’ выберите ‘Download certificate’

Если вы используете наш план Cloud dedicated, перейдите в Console, затем щёлкните по экземпляру и задайте переменные в разделе SSO.

В противном случае, если вы используете нашу Enterprise Edition:

  1. Подключитесь по SSH к вашей установке OpenReplay и выполните openreplay -e
  2. В разделе chalice раскомментируйте и затем установите следующие переменные окружения:
  • idp_entityId: openreplay/TENANT_KEY
  • idp_sso_url: https://sso.jumpcloud.com/saml2/openreplay-TENANT_KEY
  • idp_x509cert: загруженный сертификат, должен быть однострочной строкой без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
  • idp_name: JumpCloud
  1. Наконец, сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу

Подготовка (provisioning) SCIM (System for Cross-domain Identity Management)

Section titled Подготовка (provisioning) SCIM (System for Cross-domain Identity Management)

Openreplay поддерживает возможность подготовки удостоверений пользователей в Enterprise Edition.

Чтобы интегрироваться со службой SCIM Openreplay, просто включите подготовку SCIM в панели управления вашего поставщика удостоверений. Пожалуйста, обязательно задайте следующие значения для бесперебойной интеграции:

ПеременнаяОписание
SCIM connector base URLYOUR_DOMAIN/api/sso/scim/v2/
User unique identifier field nameemail
Support provisioning actionsPush new users, Push profile updates, Push groups
Authentication modeOAuth2
Access token endpointYOUR_DOMAIN/api/sso/scim/v2/token/
Authorization endpointYOUR_DOMAIN/api/sso/scim/v2/authorize/
Client idTENANT_KEY его значение можно найти в Dashboard, в разделе ‘Preferences’ > ‘Account’
Client secretЕго значение можно найти, выполнив этот запрос в вашей базе данных Postgres: SELECT tenant_secret FROM tenants WHERE tenant_key = 'TENANT_KEY';

После установки этих значений следуйте подсказкам в панели управления вашего поставщика удостоверений, чтобы протестировать интеграцию и авторизовать приложение.

После этого вы сможете подготавливать удостоверения пользователей, используя Openreplay в качестве поставщика услуг SCIM.

Примечание: Хотя Openreplay действует как поставщик услуг SCIM, он не поддерживает распределение пользователей по нескольким группам (то есть каждый пользователь может принадлежать только к одной группе). Если это не соблюдается, пользователю может быть назначено меньше или больше проектов, чем ожидалось, и у него может быть меньше или больше разрешений в приложении Openreplay.

Пример с использованием Okta

Section titled Пример с использованием Okta

В вашем приложении SAML 2.0 выполните следующее

Добавление подготовки SCIM

Section titled Добавление подготовки SCIM
  1. Нажмите вкладку General
  2. В разделе App Settings нажмите Edit
  3. В поле Provisioning выберите SCIM и нажмите Save

Выбор параметров подготовки

Section titled Выбор параметров подготовки
  1. Нажмите вкладку Provisioning. Настройки подключения SCIM появятся в разделе Settings > Integration.
  2. В Settings > Integration нажмите Edit.
  3. Укажите SCIM connector base URL и имя поля уникального идентификатора для ваших пользователей, упомянутые выше.
  4. В разделе Supported provisioning actions выберите действия подготовки, упомянутые выше.
  5. Установите раскрывающийся список Authentication Mode в значение, упомянутое выше.
  6. Установите Access token endpoint, Authorization endpoint, Client id и Client secret, как упомянуто выше.
  7. Нажмите Save.
  8. Нажмите Authentiate application.
  9. На вкладке Provisioning нажмите To App.
  10. Нажмите Edit, включите Create Users, Update User Attributes, Deactivate Users и сохраните изменения.
  • Перед началом следующего шага мы рекомендуем создать новые группы в Okta под названием OpenReplay-admin, где вы перечислите пользователей с правами администратора в OpenReplay, и OpenReplay-members, где вы перечислите пользователей с ролью member в OpenReplay, …
  1. Перейдите на вкладку Push Groups, нажмите + Push Groups (по имени или по правилу), выберите группу, которую вы хотите отправить в OpenReplay, и нажмите save
  • На этом этапе отправленные группы представляют роли и права администратора в OpenReplay и не содержат список пользователей, подготовленных для OpenReplay.
  1. Перейдите на вкладку Assignmets и добавьте пользователей удобным для вас способом (используя людей или группы)

Ответ был получен по http вместо https

Section titled Ответ был получен по http вместо https

Это очень распространённая ситуация, вызванная отсутствием заголовка ‘X-Forwarded-Proto’ в запросе. Чтобы решить эту проблему, убедитесь, что балансировщик нагрузки правильно передаёт заголовок в бэкенд OpenReplay, и выполните openreplay -e; в разделе ingress-nginx > config раскомментируйте строку use-forwarded-headers: true.