SSO
Единый вход (через SAML2) доступен только в OpenReplay Enterprise Edition.
Настройка поставщика идентификации (IDP)
Section titled Настройка поставщика идентификации (IDP)В панели управления вашего поставщика идентификации создайте новое приложение с именем openreplay (вы можете использовать этот значок). На странице конфигурации обязательно задайте следующие значения (не забудьте заменить YOUR_DOMAIN на правильное значение, например https://openreplay.mycompany.com):
| Переменная | Значение |
|---|---|
| ACS URL (также называется Single Sign On URL или Consumer URL) | |
| Entity ID (также называется Audience) | |
| Single Logout URL (также называется SLO URL) | (необязательно) |
| Name ID (иногда настраивается в разделе ‘Attribute Statements’ или ‘Parameters’) | Email, или EmailAddress, или urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress, в зависимости от вашего поставщика идентификации |
| Инициатор SAML | Установите значение Service Provider (необязательно) |
В разделе ‘Attribute Statements’ или ‘Parameters’ обязательно определите следующие поля:
| Поле | Значение |
|---|---|
| tenantKey | его значение можно найти в панели управления в разделе ‘Preferences’ > ‘Account’ |
| firstName | user.firstName |
| lastName | user.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_entityId | entityId вашего поставщика идентификации, также называемый Issuer URL |
| idp_sso_url | singleSignOnService вашего поставщика идентификации, также называемый SAML 2.0 Endpoint (HTTP) |
| idp_x509cert | x509cert, должна быть строкой в одну строку, без переносов строк. Вы можете использовать этот инструмент для форматирования вашего значения |
| idp_name | Имя поставщика идентификации (необязательно) |
| idp_sls_url | singleLogoutService вашего поставщика идентификации, также называемый SLO Endpoint (HTTP) (необязательно) |
| enforce_SSO | Если установлено в true, все подключения с именем пользователя и паролем будут заблокированы (необязательно, по умолчанию=false) |
Затем сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу:
Сертификат OpenReplay
Section titled Сертификат OpenReplayЭто необязательно; вы можете добавить сертификат x509 для дополнительной безопасности SSO:
- выполните эту команду на своём сервере или на защищённой машине (вы можете изменить срок действия вашего сертификата в соответствии со своими потребностями):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout openreplay-sso.key -out openreplay-sso.crt
- На своём сервере выполните
openreplay -e - В разделе
chaliceдобавьте следующие переменные окружения:
- sp_crt: должна быть строкой в одну строку, без переносов строк, из сгенерированного файла ‘openreplay-sso.crt’ (вы можете использовать этот инструмент для форматирования вашего значения)
- sp_key: должна быть строкой в одну строку, без переносов строк, из сгенерированного файла ‘openreplay-sso.key’
- Сохраните и выйдите с помощью
:wq, чтобы изменения вступили в силу - Добавьте сгенерированный файл ‘openreplay-sso.crt’ в конфигурацию приложения вашего поставщика идентификации
Пример с использованием Okta
Section titled Пример с использованием Okta- Войдите в панель администрирования Okta и перейдите в ‘Applications’ > ‘Applications’
- Нажмите ‘Create new app integration’, затем выберите SAML 2.0 и нажмите ‘Next’
- Установите ‘App Name’ на OpenReplay (вы можете загрузить этот значок) для вашего приложения), затем нажмите ‘Next’
- Установите:
- Single sign on URL на
/api/sso/saml2/acs/YOUR_DOMAIN - Audience URI (SP Entity ID) на
/api/sso/saml2/metadata/YOUR_DOMAIN - Name ID format на
EmailAddress
- Определите указанные ниже поля в ‘Attribute Statements’:
- tenantKey: формат
Basicи установите значение на, которое можно найти в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’TENANT_KEY - firstName: формат
Basicи установите значение наuser.firstName - lastName: формат
Basicи установите значение наuser.lastName - internalId: формат
Basicи установите значение наuser.email
- Определите указанное ниже поле в ‘Group Attribute Statements’:
- role: формат
Basic, фильтрMatch Regex, значение.*(или вы можете указать другой фильтр и регулярное выражение в соответствии со своими потребностями) - adminPrivileges: формат
Basic, фильтрMatch Regex, значениеadmin(текущий пользователь получитadmin privileges, если он входит в группу admin)
- Нажмите Next, выберите ‘I’m an Okta customer adding an internal app’ и ‘This is an internal app that we have created’, затем нажмите ‘Finish’
- На вкладке Sign On прокрутите вниз и нажмите ‘View Setup Instructions’, чтобы увидеть свою конфигурацию SAML2
- На своём сервере выполните
openreplay -e - В разделе
chaliceраскомментируйте, затем установите следующие переменные окружения:
- idp_entityId: Identity Provider Issuer
- idp_sso_url: Identity Provider Single Sign-On URL
- idp_x509cert: X.509 Certificate, должна быть строкой в одну строку, без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
- idp_name: Okta
- Наконец, сохраните и выйдите с помощью
:wq, чтобы изменения вступили в силу.
Пример с использованием Azure Active Directory
Section titled Пример с использованием Azure Active Directory- Войдите в портал Azure и перейдите в ‘Azure Active Directory’
- Нажмите ’+ Add’, выберите ‘Enterprise application’, затем нажмите ‘Create your own application’
- Установите ‘App Name’ на OpenReplay, затем выберите ‘Integrate any other application you don’t find in the gallery (Non-gallery)’ и нажмите ‘Create’
- Перейдите в ‘Single sign-on’ в левом меню и установите указанные ниже значения в блоке ‘Basic SAML Configuration’:
- Identifier (Entity ID) на
/api/sso/saml2/metadata/YOUR_DOMAIN - Reply URL (Assertion Consumer Service URL) на
/api/sso/saml2/acs/YOUR_DOMAIN - Logout URL на
/api/sso/saml2/sls/YOUR_DOMAIN
- Добавьте указанные ниже утверждения (claims) в блок ‘Attribute & Claims’ и убедитесь, что поле ‘Namespace’ остаётся пустым для каждого из них:
- tenantKey: установите значение на
, которое можно найти в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’TENANT_KEY - firstName: установите значение на
user.givenname - lastName: установите значение на
user.surname - internalId: установите значение на
user.mail
- Перейдите в ‘Users and groups’ и назначьте выбранных вами пользователей приложению
- Теперь подключитесь по SSH к вашей установке OpenReplay и выполните
openreplay -e - В разделе
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
- Наконец, сохраните и выйдите с помощью
:wq, чтобы изменения вступили в силу
Пример с использованием Google Workspace (ранее G Suite)
Section titled Пример с использованием Google Workspace (ранее G Suite)Добавление пользовательских атрибутов:
Section titled Добавление пользовательских атрибутов:- В консоли администратора Google перейдите в ‘Directory’ > ‘Users’ > ‘More options’ > ‘Manage custom attributes’.
- Нажмите ‘Add Custom Attribute’.
- Установите следующие поля:
- 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’
- Нажмите ‘Add’
- Чтобы добавить значения новым пользовательским атрибутам, перейдите в ‘Users’
- Выберите нужного пользователя или пользователей
- Нажмите ‘User information’, затем отредактируйте раздел ‘OpenReplay’
- Измените значение role на нужную роль в ‘OpenReplay’ (роль должна совпадать с той, что создана в панели управления OpenReplay в разделе ‘Preferences’ > ‘Roles’)
- Измените значение adminPrivileges на ‘Yes’, если пользователю разрешено иметь права администратора в OpenReplay
- Нажмите ‘Save’
Конфигурация:
Section titled Конфигурация:- Войдите в консоль администратора Google и перейдите в ‘Apps’
- Нажмите ‘Web and mobile apps’, затем нажмите ‘Add app’ > ‘Add custom SAML app’
- Установите ‘App name’ на OpenReplay (вы можете загрузить этот значок для ‘App icon”), затем нажмите ‘Continue’
- Скопируйте ‘SSO URL’, ‘Entity ID’ и ‘Certificate’, затем нажмите ‘Continue’ (мы будем использовать эти значения на шаге 11)
- Установите:
- ACS URL на
( /api/sso/saml2/acs/YOUR_DOMAIN /TENANT_KEYTENANT_KEYнаходится в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’) - Entity ID на
/api/sso/saml2/metadata/YOUR_DOMAIN - Name ID format на
Email - Name ID на
Basic information > Primary Email
- Нажмите ‘Continue’, затем нажмите ‘Add Mapping’, чтобы добавить указанные ниже атрибуты:
Basic information > First Name-> firstNameBasic information > Last Name-> lastNameBasic information > Primary Email-> internalIdOpenReplay > role-> roleOpenReplay > adminPrivileges-> adminPrivileges
- Нажмите ‘Finish’
- В консоли администратора Google перейдите в ‘Apps’ > ‘Web and mobile apps’ и выберите ‘OpenReplay’
- Нажмите ‘User access’, выберите ‘ON for everyone’, затем нажмите ‘Save’
- На своём сервере выполните
openreplay -e - В разделе
chalice > envраскомментируйте и установите следующие атрибуты, используя значения из шага 4:
- idp_sso_url: вставьте значение ‘SSO URL’
- idp_entityId: вставьте значение ‘Entity ID’
- idp_x509cert: используйте этот инструмент для форматирования скопированного/загруженного сертификата
- idp_name: установите значение на
G-Suite - idp_tenantKey:
находится в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’TENANT_KEY
- Наконец, сохраните и выйдите с помощью
:wq, чтобы изменения вступили в силу.
Пример с использованием JumpCloud
Section titled Пример с использованием JumpCloud- Войдите в панель администрирования JumpCloud и в левом меню перейдите в ‘SSO’
- Нажмите ’+ Add New Application’, затем выберите ‘Custom SAML App’
- Установите ‘Display Label’ на OpenReplay (вы можете загрузить этот значок для вашего приложения), затем перейдите на вкладку ‘SSO’
- Установите:
- IdP Entity ID на
openreplay/TENANT_KEY - SP Entity ID на
/api/sso/saml2/metadata/YOUR_DOMAIN - ACS URL на
/api/sso/saml2/acs/YOUR_DOMAIN - 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
- Если вы следовали инструкциям по сертификату OpenReplay, вы можете загрузить сгенерированный файл ‘openreplay-sso.crt’, нажав ‘Upload SP Certificate’; в противном случае пропустите этот шаг
- Определите указанные ниже поля в ‘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.
- Определите указанные ниже поля в ‘CONSTANT ATTRIBUTES’, нажав кнопку ‘add attribute’:
- tenantKey: установите значение на
, которое можно найти в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’TENANT_KEY - role: необязательно, пропустите, если определено на предыдущем шаге; роль пользователя в OpenReplay, должна совпадать с именем роли, уже определённым в OpenReplay (по умолчанию =
member) - adminPrivileges: необязательно, пропустите, если определено на предыдущем шаге; установите значение на
true, если хотите предоставить новым пользователям права администратора,false— если нет (по умолчанию =false)
- На этом этапе вы можете перейти на вкладку ‘User Groups’ и выбрать группу пользователей, которая будет иметь доступ к OpenReplay, или вы можете сделать это позже
- Нажмите ‘activate’ и ‘continue’ во всплывающем окне подтверждения
- Нажмите на значок нового приложения OpenReplay, затем в левом выпадающем меню ‘IDP Certificate Valid’ выберите ‘Download certificate’
- На своём сервере выполните
openreplay -e - В разделе
chaliceраскомментируйте, затем установите следующие переменные окружения:
- idp_entityId:
openreplay/TENANT_KEY - idp_sso_url:
https://sso.jumpcloud.com/saml2/openreplay-TENANT_KEY - idp_x509cert: загруженный сертификат, должен быть строкой в одну строку, без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
- idp_name: JumpCloud
- Наконец, сохраните и выйдите с помощью
:wq, чтобы изменения вступили в силу.
Ошибки
Section titled ОшибкиОтвет был получен по http вместо http
Section titled Ответ был получен по http вместо httpЭто очень распространённая ситуация, и она возникает из-за отсутствия заголовка ‘X-Forwarded-Proto’ в запросе. Чтобы решить эту проблему, убедитесь, что балансировщик нагрузки правильно перенаправляет заголовок на бэкенд OpenReplay.