SSO
Единый вход (через SAML2) доступен только в редакции OpenReplay Enterprise.
Настройка поставщика удостоверений (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 initiator | Установите значение Service Provider (необязательно) |
В разделе ‘Attribute Statements’ или ‘Parameters’ обязательно определите следующие поля:
| Поле | Значение |
|---|---|
| tenantKey | его значение можно найти в панели управления, в разделе ‘Preferences’ > ‘Account’ (этот атрибут не следует добавлять, если вы используете наш план Cloud Dedicated) |
| firstName | user.firstName |
| lastName | user.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, перейдите в Консоль, затем нажмите на экземпляр и задайте переменные в разделе SSO.
В противном случае, если вы используете нашу редакцию Enterprise, выполните 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) |
| idp_group_prefixes | Префиксы имён групп IdP (необязательно, по умолчанию=OpenReplay-,or-) |
Затем сохраните и выйдите с помощью :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’ (этот атрибут не следует добавлять, если вы используете наш план Cloud Dedicated)TENANT_KEY - firstName: формат
Basicи установите значение наuser.firstName - lastName: формат
Basicи установите значение наuser.lastName - internalId: формат
Basicи установите значение наuser.email
- Определите приведённое ниже поле в ‘Group Attribute Statement’:
- groups: формат
Basic, фильтрMatch Regex, значениеOpenReplay-*(или вы можете указать другой фильтр и регулярное выражение в соответствии со своими потребностями)
- Нажмите 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
Если вы используете наш план Cloud Dedicated, перейдите в Консоль, затем нажмите на экземпляр и задайте переменные в разделе SSO.
В противном случае, если вы используете нашу редакцию Enterprise:
- Подключитесь по SSH к вашей установке OpenReplay и выполните
openreplay -e - В разделе
chaliceраскомментируйте и затем задайте следующие переменные окружения:
- idp_entityId: Identity Provider Issuer
- idp_sso_url: Identity Provider Single Sign-On URL
- idp_x509cert: сертификат X.509, должен быть строкой в одну строку, без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
- 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’ (этот атрибут/claim не следует добавлять, если вы используете наш план Cloud Dedicated)TENANT_KEY - firstName: установите значение на
user.givenname - lastName: установите значение на
user.surname - internalId: установите значение на
user.mail
- Перейдите в ‘Users and groups’ и назначьте выбранных пользователей приложению
Если вы используете наш план Cloud Dedicated, перейдите в Консоль, затем нажмите на экземпляр и задайте переменные в разделе SSO (значения находятся в ‘Azure Active Directory’ > ‘OpenReplay’ > ‘Single sign-on’).
В противном случае, если вы используете нашу редакцию Enterprise:
- Подключитесь по 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, должен быть строкой в одну строку, без переносов строк (вы можете использовать этот инструмент для форматирования вашего значения)
- 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’, но если вы используете наш план Cloud Dedicated, оставьте значение tenantKey пустым) - 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 > groups-> groups
- Нажмите ‘Finish’
- В консоли администратора Google перейдите в ‘Apps’ > ‘Web and mobile apps’ и выберите ‘OpenReplay’
- Нажмите ‘User access’, выберите ‘ON for everyone’, затем нажмите ‘Save’
Если вы используете наш план Cloud Dedicated, перейдите в Консоль, затем нажмите на экземпляр и задайте переменные в разделе SSO.
В противном случае, если вы используете нашу редакцию Enterprise:
- Подключитесь по SSH к вашей установке OpenReplay и выполните
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_KEYTENANT_KEYнаходится в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’, но если вы используете наш план Cloud Dedicated, оставьте значение tenantKey пустым) - 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-(это значение нельзя изменить позже; если вы используете наш план Cloud Dedicated, оставьте часть tenantKey пустой)TENANT_KEY
- Если вы следовали инструкциям по Сертификату OpenReplay, вы можете загрузить сгенерированный файл ‘openreplay-sso.crt’, нажав ‘Upload SP Certificate’; в противном случае пропустите этот шаг
- Определите приведённые ниже поля в ‘USER ATTRIBUTE MAPPING’, нажав кнопку ‘add attribute’:
- firstName: установите значение на
firstname - lastName: установите значение на
lastname - internalId: установите значение на
email - groups: необязательно, роль пользователя и права администратора в OpenReplay; если это постоянное значение для всех пользователей, вам следует определить его на следующем шаге; в противном случае вам нужно добавить новый строковый атрибут в группу JumpCloud, назвать его
OpenReplay-groupsи установить значение на имя роли, а затем в конфигурации SSO выбрать ‘Custom User or Group Attribute’ и установить значение наOpenReplay-groups.
- Определите приведённые ниже поля в ‘CONSTANT ATTRIBUTES’, нажав кнопку ‘add attribute’:
- tenantKey: установите значение на
, которое находится в панели управления OpenReplay в разделе ‘Preferences’ > ‘Account’ (этот атрибут не следует добавлять, если вы используете наш план Cloud Dedicated)TENANT_KEY - groups: необязательно, пропустите, если определено на предыдущем шаге; роль пользователя и права администратора в OpenReplay должны совпадать с именем роли, уже определённой в OpenReplay (по умолчанию =
memberбез прав администратора)
- На этом этапе вы можете перейти на вкладку ‘User Groups’ и выбрать группу пользователей, которые будут иметь доступ к OpenReplay, или вы можете сделать это позже
- Нажмите ‘activate’ и ‘continue’ во всплывающем окне подтверждения
- Нажмите на значок нового приложения OpenReplay, затем в левом раскрывающемся списке ‘IDP Certificate Valid’ выберите ‘Download certificate’
Если вы используете наш план Cloud Dedicated, перейдите в Консоль, затем нажмите на экземпляр и задайте переменные в разделе SSO.
В противном случае, если вы используете нашу редакцию Enterprise:
- Подключитесь по SSH к вашей установке OpenReplay и выполните
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, чтобы изменения вступили в силу
Подготовка (provisioning) SCIM (System for Cross-domain Identity Management)
Section titled Подготовка (provisioning) SCIM (System for Cross-domain Identity Management)Openreplay поддерживает возможность подготовки удостоверений пользователей в редакции Enterprise.
Чтобы выполнить интеграцию со службой SCIM от Openreplay, просто включите подготовку SCIM в панели управления вашего поставщика удостоверений. Обязательно задайте следующие значения для бесперебойной интеграции:
| Переменная | Описание |
|---|---|
| SCIM connector base URL | /api/sso/scim/v2/ |
| User unique identifier field name | email |
| Support provisioning actions | Push new users, Push profile updates, Push groups |
| Authentication mode | OAuth2 |
| Access token endpoint | /api/sso/scim/v2/token/ |
| Authorization endpoint | /api/sso/scim/v2/authorize/ |
| Client id | его значение можно найти в панели управления, в разделе ‘Preferences’ > ‘Account’ |
| Client secret | Его значение можно найти, выполнив этот запрос в вашей базе данных Postgres: SELECT tenant_secret FROM tenants WHERE tenant_key = ' |
После установки этих значений следуйте подсказкам в панели управления вашего поставщика удостоверений, чтобы протестировать интеграцию и авторизовать приложение.
После этого вы сможете подготавливать удостоверения пользователей, используя Openreplay в качестве поставщика услуг SCIM.
Примечание: Хотя Openreplay действует как поставщик услуг SCIM, он не поддерживает разделение пользователей на несколько групп (то есть каждый пользователь может принадлежать только к одной группе). Если это не соблюдается, пользователь может быть назначен на меньшее или большее количество проектов, чем ожидалось, и может иметь меньше или больше разрешений в приложении Openreplay.
Пример с использованием Okta
Section titled Пример с использованием OktaВ вашем приложении SAML 2.0 выполните следующее
Добавление подготовки SCIM
Section titled Добавление подготовки SCIM- Нажмите вкладку General
- В разделе App Settings нажмите Edit
- В поле Provisioning выберите SCIM и нажмите Save
Выбор параметров подготовки
Section titled Выбор параметров подготовки- Нажмите вкладку Provisioning. Параметры подключения SCIM появятся в разделе Settings > Integration.
- В разделе Settings > Integration нажмите Edit.
- Укажите SCIM connector base URL и имя поля уникального идентификатора ваших пользователей, упомянутые выше.
- В разделе Supported provisioning actions выберите действия подготовки, упомянутые выше.
- Установите раскрывающийся список Authentication Mode на значение, упомянутое выше.
- Установите Access token endpoint, Authorization endpoint, Client id и Client secret, как указано выше.
- Нажмите Save.
- Нажмите Authentiate application.
- На вкладке Provisioning нажмите To App.
- Нажмите Edit, включите
Create Users,Update User Attributes,Deactivate Usersи сохраните изменения.
- Перед началом следующего шага мы рекомендуем создать в Okta новые группы, называемые
OpenReplay-admin, в которые вы вносите пользователей с правами администратора в OpenReplay, иOpenReplay-members, в которые вы вносите пользователей с рольюmemberв OpenReplay, …
- Перейдите на вкладку Push Groups, нажмите + Push Groups (по имени или по правилу), выберите группу, которую вы хотите отправить в OpenReplay, и нажмите save
- На этом этапе отправленные группы представляют роли и права администратора в OpenReplay и не содержат списка пользователей, подготовленных для OpenReplay.
- Перейдите на вкладку Assignmets и добавьте пользователей удобным для вас способом (используя людей или группы)
Ошибки
Section titled ОшибкиОтвет был получен по http вместо https
Section titled Ответ был получен по http вместо httpsЭто очень распространённая проблема, и она возникает из-за отсутствия заголовка ‘X-Forwarded-Proto’ в запросе. Чтобы решить эту проблему, убедитесь, что балансировщик нагрузки правильно перенаправляет заголовок на backend OpenReplay, и выполните openreplay -e; в разделе ingress-nginx > config раскомментируйте строку use-forwarded-headers: true.