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Установите значение Service Provider (необязательно)

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

ПолеЗначение
tenantKeyTENANT_KEY его значение можно найти в панели управления в разделе ‘Preferences’ > ‘Account’
firstNameuser.firstName
lastNameuser.lastName
internalIdВнутренний ID или user.email (ID пользователя в вашей системе управления идентификацией) (необязательно)
roleРоль пользователя; в зависимости от вашего поставщика идентификации это может быть user.role или group и т. д. (необязательно, по умолчанию = member)
adminPrivilegesИмеет ли пользователь права администратора или нет; если это поле содержит любое значение, отличное от false, оно будет считаться true. (необязательно, по умолчанию = false)

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

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

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

Чтобы включить SSO, выполните 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)

Затем сохраните и выйдите с помощью :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. Определите указанные ниже поля в ‘Attribute Statements’:
  • tenantKey: формат Basic и установите значение на TENANT_KEY, которое можно найти в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’
  • firstName: формат Basic и установите значение на user.firstName
  • lastName: формат Basic и установите значение на user.lastName
  • internalId: формат Basic и установите значение на user.email
  1. Определите указанное ниже поле в ‘Group Attribute Statements’:
  • role: формат Basic, фильтр Match Regex, значение .* (или вы можете указать другой фильтр и регулярное выражение в соответствии со своими потребностями)
  • adminPrivileges: формат Basic, фильтр Match Regex, значение admin (текущий пользователь получит admin privileges, если он входит в группу admin)
  1. Нажмите Next, выберите ‘I’m an Okta customer adding an internal app’ и ‘This is an internal app that we have created’, затем нажмите ‘Finish’
  2. На вкладке Sign On прокрутите вниз и нажмите ‘View Setup Instructions’, чтобы увидеть свою конфигурацию SAML2
  3. На своём сервере выполните openreplay -e
  4. В разделе chalice раскомментируйте, затем установите следующие переменные окружения:
  • idp_entityId: Identity Provider Issuer
  • idp_sso_url: Identity Provider Single Sign-On URL
  • idp_x509cert: X.509 Certificate, должна быть строкой в одну строку, без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
  • 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’
  • firstName: установите значение на user.givenname
  • lastName: установите значение на user.surname
  • internalId: установите значение на user.mail
  1. Перейдите в ‘Users and groups’ и назначьте выбранных вами пользователей приложению
  2. Теперь подключитесь по SSH к вашей установке OpenReplay и выполните openreplay -e
  3. В разделе 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 Certificate, должна быть строкой в одну строку, без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
    • idp_name: Active Directory
  4. Наконец, сохраните и выйдите с помощью :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’)
  • 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 > role -> role
  • OpenReplay > adminPrivileges -> adminPrivileges
  1. Нажмите ‘Finish’
  2. В консоли администратора Google перейдите в ‘Apps’ > ‘Web and mobile apps’ и выберите ‘OpenReplay’
  3. Нажмите ‘User access’, выберите ‘ON for everyone’, затем нажмите ‘Save’
  4. На своём сервере выполните openreplay -e
  5. В разделе 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
  • 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 (это значение нельзя изменить позже)
  1. Если вы следовали инструкциям по сертификату OpenReplay, вы можете загрузить сгенерированный файл ‘openreplay-sso.crt’, нажав ‘Upload SP Certificate’; в противном случае пропустите этот шаг
  2. Определите указанные ниже поля в ‘USER ATTRIBUTE MAPPING’, нажав кнопку ‘add attribute’:
  • firstName: установите значение на firstname
  • lastName: установите значение на lastname
  • internalId: установите значение на email
  • role: необязательно, роль пользователя в OpenReplay; если это постоянное значение для всех пользователей, вам следует определить его на следующем шаге, в противном случае вам нужно добавить новый строковый атрибут в группу JumpCloud, назвать его OpenReplayRole и установить значение на имя роли, а затем в конфигурации SSO выбрать ‘Custom User or Group Attribute’ и установить значение на OpenReplayRole.
  • adminPrivileges: необязательно, если это постоянное значение для всех пользователей, вам следует определить его на следующем шаге; в противном случае вам нужно добавить новый булев атрибут в группу JumpCloud, назвать его OpenReplayAdminPrivileges и установить значение на имя роли, а затем в конфигурации SSO выбрать ‘Custom User or Group Attribute’ и установить значение на OpenReplayAdminPrivileges.
  1. Определите указанные ниже поля в ‘CONSTANT ATTRIBUTES’, нажав кнопку ‘add attribute’:
  • tenantKey: установите значение на TENANT_KEY, которое можно найти в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’
  • role: необязательно, пропустите, если определено на предыдущем шаге; роль пользователя в OpenReplay, должна совпадать с именем роли, уже определённым в OpenReplay (по умолчанию = member)
  • adminPrivileges: необязательно, пропустите, если определено на предыдущем шаге; установите значение на true, если хотите предоставить новым пользователям права администратора, false — если нет (по умолчанию = false)
  1. На этом этапе вы можете перейти на вкладку ‘User Groups’ и выбрать группу пользователей, которая будет иметь доступ к OpenReplay, или вы можете сделать это позже
  2. Нажмите ‘activate’ и ‘continue’ во всплывающем окне подтверждения
  3. Нажмите на значок нового приложения OpenReplay, затем в левом выпадающем меню ‘IDP Certificate Valid’ выберите ‘Download certificate’
  4. На своём сервере выполните openreplay -e
  5. В разделе chalice раскомментируйте, затем установите следующие переменные окружения:
  • idp_entityId: openreplay/TENANT_KEY
  • idp_sso_url: https://sso.jumpcloud.com/saml2/openreplay-TENANT_KEY
  • idp_x509cert: загруженный сертификат, должен быть строкой в одну строку, без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
  • idp_name: JumpCloud
  1. Наконец, сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу.

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

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

Это очень распространённая ситуация, и она возникает из-за отсутствия заголовка ‘X-Forwarded-Proto’ в запросе. Чтобы решить эту проблему, убедитесь, что балансировщик нагрузки правильно перенаправляет заголовок на бэкенд OpenReplay.