SSO

Cómo configurar el inicio de sesión único (SSO) mediante SAML2.

SSO

El inicio de sesión único (mediante SAML2) solo está disponible en OpenReplay Enterprise Edition.

Configuración del proveedor de identidad (IDP)

Section titled Configuración del proveedor de identidad (IDP)

En el panel de tu proveedor de identidad, crea una nueva aplicación llamada openreplay (puedes usar este icono). En la página de configuración, asegúrate de establecer los siguientes valores (asegúrate de reemplazar YOUR_DOMAIN con el valor correcto, por ejemplo https://openreplay.mycompany.com):

VariableValor
ACS URL (también llamada Single Sign On URL o Consumer URL)YOUR_DOMAIN/api/sso/saml2/acs/
Entity ID (también llamada Audience)YOUR_DOMAIN/api/sso/saml2/metadata/
Single Logout URL (también llamada SLO URL)YOUR_DOMAIN/api/sso/saml2/sls/ (opcional)
Name ID (a veces es configurable en la sección ‘Attribute Statements’ o ‘Parameters’)Email o EmailAddress o urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress, según tu proveedor de identidad
SAML initiatorConfigúralo como Service Provider (opcional)

En la sección ‘Attribute Statements’ o ‘Parameters’, asegúrate de definir los siguientes campos:

CampoValor
tenantKeyTENANT_KEY su valor se encuentra en el Dashboard, en ‘Preferences’ > ‘Account’ (este atributo no debe añadirse si estás usando nuestro plan Cloud Dedicated)
firstNameuser.firstName
lastNameuser.lastName
internalIdID interno o user.email (el ID del usuario en tu sistema de gestión de identidades) (opcional)
groupsRepresenta el rol y los privilegios de administrador del usuario en OpenReplay; según tu proveedor de identidad puede ser user.role o group, etc. (opcional, valor predeterminado = member sin privilegios de administrador). Para simplificar la gestión de los roles de OpenReplay desde el lado del IdP, puedes crear un grupo llamado OpenReplay-admin donde incluyas a los usuarios con privilegios de administrador, y un grupo llamado OpenReplay-member donde incluyas a los usuarios que tienen el rol ‘member’

Ahora deberías tener todos los valores necesarios para el siguiente paso/sección.

Si estás usando nuestro plan Cloud dedicated, ve a la Console, luego haz clic en la instancia y establece las variables en la sección SSO.

De lo contrario, si estás ejecutando nuestra Enterprise Edition, ejecuta openreplay -e y descomenta y luego actualiza las siguientes variables de entorno en la sección chalice:

VariableDescripción
idp_entityIdEl entityId de tu proveedor de identidad, también conocido como Issuer URL
idp_sso_urlEl singleSignOnService de tu proveedor de identidad, también conocido como SAML 2.0 Endpoint (HTTP)
idp_x509certEl x509cert, debe ser una cadena de una sola línea, sin saltos de línea. Puedes usar esta herramienta para formatear tu valor
idp_nameEl nombre del proveedor de identidad (opcional)
idp_sls_urlEl singleLogoutService de tu proveedor de identidad, también conocido como SLO Endpoint (HTTP) (opcional)
enforce_SSOSi se establece en true, se bloquearán todas las conexiones con nombre de usuario y contraseña (opcional, valor predeterminado=false)
idp_group_prefixesLos prefijos del nombre de grupo del IdP (opcional, valor predeterminado=OpenReplay-,or-)

Luego, guarda y sal usando :wq para que los cambios surtan efecto:

Esto es opcional, puedes añadir un certificado x509 para mayor seguridad del SSO:

  1. ejecuta este comando en tu servidor o en tu máquina segura (puedes cambiar el tiempo de validez de tu certificado según tus necesidades):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout openreplay-sso.key -out openreplay-sso.crt
  1. En tu servidor, ejecuta openreplay -e
  2. En la sección chalice, añade las siguientes variables de entorno:
  • sp_crt: debe ser una cadena de una sola línea, sin saltos de línea, del archivo ‘openreplay-sso.crt’ generado (puedes usar esta herramienta para formatear tu valor)
  • sp_key: debe ser una cadena de una sola línea, sin saltos de línea, del archivo ‘openreplay-sso.key’ generado
  1. Guarda y sal usando :wq para que los cambios surtan efecto
  2. Añade el archivo ‘openreplay-sso.crt’ generado a la configuración de la aplicación de tu proveedor de identidad
  1. Inicia sesión en tu panel de administración de Okta y ve a ‘Applications’ > ‘Applications’
  2. Pulsa ‘Create new app integration’, luego selecciona SAML 2.0 y pulsa ‘Next’
  3. Establece el ‘App Name’ en OpenReplay (puedes subir este icono) para tu aplicación) y luego pulsa ‘Next’
  4. Establece:
  • Single sign on URL en YOUR_DOMAIN/api/sso/saml2/acs/
  • Audience URI (SP Entity ID) en YOUR_DOMAIN/api/sso/saml2/metadata/
  • Name ID format en EmailAddress
  1. Pulsa Next, selecciona ‘This is an internal app that we have created’ y luego pulsa ‘Finish’
  2. En la pestaña Sign On, desplázate hacia abajo y pulsa ‘Show legacy configuration’ y luego pulsa ‘Edit’
  3. Define los siguientes campos en ‘Profile Attribute Statements’:
  • tenantKey: formato Basic y establece el valor en TENANT_KEY, que se encuentra en el dashboard de OpenReplay en ‘Preferences’ > ‘Account’ (este atributo no debe añadirse si estás usando nuestro plan Cloud Dedicated)
  • firstName: formato Basic y establece el valor en user.firstName
  • lastName: formato Basic y establece el valor en user.lastName
  • internalId: formato Basic y establece el valor en user.email
  1. Define el siguiente campo en ‘Group Attribute Statement’ (esto es opcional):
  • groups: formato Basic filtro Match Regex valor OpenReplay-* (o puedes especificar un filtro y una expresión regular diferentes según tus necesidades)
  1. Pulsa ‘save’ y desplázate hacia arriba a la derecha y pulsa ‘View Setup Instructions’ para ver tu configuración de SAML2

Si estás usando nuestro plan Cloud dedicated, ve a la Console, luego haz clic en la instancia y establece las variables en la sección SSO.

De lo contrario, si estás ejecutando nuestra Enterprise Edition:

  1. Conéctate por SSH a tu instalación de OpenReplay y ejecuta openreplay -e
  2. En la sección chalice, descomenta y luego establece las siguientes variables de entorno:
  • idp_entityId: Identity Provider Issuer
  • idp_sso_url: Identity Provider Single Sign-On URL
  • idp_x509cert: certificado X.509, debe ser una cadena de una sola línea, sin saltos de línea (puedes usar esta herramienta para formatear tu valor)
  • idp_name: Okta
  1. Finalmente, guarda y sal usando :wq para que los cambios surtan efecto

Ejemplo con Azure Active Directory

Section titled Ejemplo con Azure Active Directory
  1. Inicia sesión en tu portal de Azure y ve a ‘Azure Active Directory’
  2. Pulsa ’+ Add’, selecciona ‘Enterprise application’ y luego haz clic en ‘Create your own application’
  3. Establece el ‘App Name’ en OpenReplay, luego selecciona ‘Integrate any other application you don’t find in the gallery (Non-gallery)’ y pulsa ‘Create’
  4. Navega a ‘Single sign-on’ en el menú de la izquierda y establece los siguientes valores en el bloque ‘Basic SAML Configuration’:
  • Identifier (Entity ID) en YOUR_DOMAIN/api/sso/saml2/metadata/
  • Reply URL (Assertion Consumer Service URL) en YOUR_DOMAIN/api/sso/saml2/acs/
  • Logout URL en YOUR_DOMAIN/api/sso/saml2/sls/
  1. Añade los siguientes claims en el bloque ‘Attribute & Claims’ y asegúrate de que el campo ‘Namespace’ quede vacío para cada uno de ellos:
  • tenantKey: establece el valor en TENANT_KEY, que se encuentra en el dashboard de OpenReplay en ‘Preferences’ > ‘Account’ (este atributo/claim no debe añadirse si estás usando nuestro plan Cloud Dedicated)
  • firstName: establece el valor en user.givenname
  • lastName: establece el valor en user.surname
  • internalId: establece el valor en user.mail
  1. Navega a ‘Users and groups’ y asigna los usuarios que selecciones a la aplicación

Si estás usando nuestro plan Cloud dedicated, ve a la Console, luego haz clic en la instancia y establece las variables en la sección SSO (los valores se encuentran en ‘Azure Active Directory’ > ‘OpenReplay’ > ‘Single sign-on’).

De lo contrario, si estás ejecutando nuestra Enterprise Edition:

  1. Conéctate por SSH a tu instalación de OpenReplay y ejecuta openreplay -e
  2. En la sección chalice, descomenta y luego establece las siguientes variables de entorno (los valores se encuentran en ‘Azure Active Directory’ > ‘OpenReplay’ > ‘Single sign-on’):
  • idp_entityId: Azure AD Identifier
  • idp_sso_url: Login URL
  • idp_sls_url: Logout URL
  • idp_x509cert: certificado X.509, debe ser una cadena de una sola línea, sin saltos de línea (puedes usar esta herramienta para formatear tu valor)
  • idp_name: Active Directory
  1. Finalmente, guarda y sal usando :wq para que los cambios surtan efecto

Ejemplo con Google Workspace (anteriormente G Suite)

Section titled Ejemplo con Google Workspace (anteriormente G Suite)

Añadir atributos personalizados:

Section titled Añadir atributos personalizados:
  1. En la consola de administración de Google, ve a ‘Directory’ > ‘Users’ > ‘More options’ > ‘Manage custom attributes’.
  2. Haz clic en ‘Add Custom Attribute’.
  3. Establece los siguientes campos:
  • 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. Haz clic en ‘Add’
  2. Para añadir valores a los nuevos atributos personalizados, ve a ‘Users’
  3. Selecciona el o los usuarios deseados
  4. Haz clic en ‘User information’ y luego edita la sección ‘OpenReplay’
  5. Cambia el valor de role al rol deseado en ‘OpenReplay’ (el rol debe coincidir con el creado en el dashboard de OpenReplay en ‘Preferences’ > ‘Roles’)
  6. Cambia el valor de adminPrivileges a ‘Yes’ si el usuario tiene permitido tener privilegios de administrador en OpenReplay
  7. Haz clic en ‘Save’
  1. Inicia sesión en tu consola de administración de Google y ve a ‘Apps’
  2. Pulsa ‘Web and mobile apps’ y luego haz clic en ‘Add app’ > ‘Add custom SAML app’
  3. Establece el ‘App name’ en OpenReplay (puedes subir este icono para ‘App icon”) y luego pulsa ‘Continue’
  4. Copia ‘SSO URL’, ‘Entity ID’ y ‘Certificate’ y luego haz clic en ‘Continue’ (usaremos estos valores en el paso 11)
  5. Establece:
  • ACS URL en YOUR_DOMAIN/api/sso/saml2/acs/TENANT_KEY/ (TENANT_KEY se encuentra en el dashboard de OpenReplay en ‘Preferences’ > ‘Account’, pero si estás usando nuestro plan Cloud Dedicated, deja vacío el valor de tenantKey)
  • Entity ID en YOUR_DOMAIN/api/sso/saml2/metadata/
  • Name ID format en Email
  • Name ID en Basic information > Primary Email
  1. Haz clic en ‘Continue’ y luego pulsa ‘Add Mapping’ para añadir los siguientes atributos:
  • Basic information > First Name -> firstName
  • Basic information > Last Name -> lastName
  • Basic information > Primary Email -> internalId
  • OpenReplay > groups -> groups
  1. Haz clic en ‘Finish’
  2. En la consola de administración de Google, ve a ‘Apps’ > ‘Web and mobile apps’ y selecciona ‘OpenReplay’
  3. Haz clic en ‘User access’, selecciona ‘ON for everyone’ y luego pulsa ‘Save’

Si estás usando nuestro plan Cloud dedicated, ve a la Console, luego haz clic en la instancia y establece las variables en la sección SSO.

De lo contrario, si estás ejecutando nuestra Enterprise Edition:

  1. Conéctate por SSH a tu instalación de OpenReplay y ejecuta openreplay -e
  2. En la sección chalice > env, descomenta y establece los siguientes atributos usando los valores del paso 4:
  • idp_sso_url: pega el valor de ‘SSO URL’
  • idp_entityId: pega el valor de ‘Entity ID’
  • idp_x509cert: usa esta herramienta para formatear el certificado copiado/descargado
  • idp_name: establece el valor en G-Suite
  • idp_tenantKey: TENANT_KEY que se encuentra en el dashboard de OpenReplay en ‘Preferences’ > ‘Account’
  1. Finalmente, guarda y sal usando :wq para que los cambios surtan efecto
  1. Inicia sesión en tu panel de administración de JumpCloud y, en el menú de la izquierda, ve a ‘SSO’
  2. Pulsa ’+ Add New Application’, luego selecciona ‘Custom SAML App’
  3. Establece el ‘Display Label’ en OpenReplay (puedes subir este icono para tu aplicación) y luego ve a la pestaña ‘SSO’
  4. Establece:
  • IdP Entity ID en openreplay/TENANT_KEY (TENANT_KEY se encuentra en el dashboard de OpenReplay en ‘Preferences’ > ‘Account’, pero si estás usando nuestro plan Cloud Dedicated, deja vacío el valor de tenantKey)
  • SP Entity ID en YOUR_DOMAIN/api/sso/saml2/metadata/
  • ACS URL en YOUR_DOMAIN/api/sso/saml2/acs/
  • SAMLSubject NameID en email
  • SAMLSubject NameID Format: en urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
  • Signature Algorithm en RSA-SHA256
  • Marca Sign Assertion
  • IDP URL debe terminar en openreplay-TENANT_KEY (este valor no se puede cambiar después; si estás usando nuestro plan Cloud Dedicated, deja vacía la parte de tenantKey)
  1. Si seguiste las instrucciones del Certificado de OpenReplay, puedes subir el archivo ‘openreplay-sso.crt’ generado pulsando ‘Upload SP Certificate’; de lo contrario, ignora este paso
  2. Define los siguientes campos en ‘USER ATTRIBUTE MAPPING’ pulsando el botón ‘add attribute’:
  • firstName: establece el valor en firstname
  • lastName: establece el valor en lastname
  • internalId: establece el valor en email
  • groups: opcional, el rol y los privilegios de administrador del usuario en OpenReplay; si es un valor constante para todos los usuarios, deberías definirlo en el siguiente paso, de lo contrario tienes que añadir un nuevo atributo de tipo cadena al grupo de JumpCloud, llamarlo OpenReplay-groups y establecer el valor en el nombre del rol, y luego en la configuración de SSO, seleccionar ‘Custom User or Group Attribute’ y establecer el valor en OpenReplay-groups.
  1. Define los siguientes campos en ‘CONSTANT ATTRIBUTES’ pulsando el botón ‘add attribute’:
  • tenantKey: establece el valor en TENANT_KEY, que se encuentra en el dashboard de OpenReplay en ‘Preferences’ > ‘Account’ (este atributo no debe añadirse si estás usando nuestro plan Cloud Dedicated)
  • groups: opcional, ignóralo si se definió en el paso anterior, el rol y los privilegios de administrador del usuario en OpenReplay, debe coincidir con el nombre del rol ya definido en OpenReplay (valor predeterminado = member sin privilegios de administrador)
  1. En esta etapa, puedes ir a la pestaña ‘User Groups’ y seleccionar el grupo de usuarios que tendrá acceso a OpenReplay, o puedes hacerlo más tarde
  2. Pulsa ‘activate’ y ‘continue’ en la ventana emergente de confirmación
  3. Pulsa el icono de la nueva aplicación OpenReplay, luego en el menú desplegable de la izquierda ‘IDP Certificate Valid’ elige ‘Download certificate’

Si estás usando nuestro plan Cloud dedicated, ve a la Console, luego haz clic en la instancia y establece las variables en la sección SSO.

De lo contrario, si estás ejecutando nuestra Enterprise Edition:

  1. Conéctate por SSH a tu instalación de OpenReplay y ejecuta openreplay -e
  2. En la sección chalice, descomenta y luego establece las siguientes variables de entorno:
  • idp_entityId: openreplay/TENANT_KEY
  • idp_sso_url: https://sso.jumpcloud.com/saml2/openreplay-TENANT_KEY
  • idp_x509cert: el certificado descargado, debe ser una cadena de una sola línea, sin saltos de línea (puedes usar esta herramienta para formatear tu valor)
  • idp_name: JumpCloud
  1. Finalmente, guarda y sal usando :wq para que los cambios surtan efecto

Aprovisionamiento SCIM (System for Cross-domain Identity Management)

Section titled Aprovisionamiento SCIM (System for Cross-domain Identity Management)

Openreplay admite la opción de aprovisionar identidades de usuario en la Enterprise Edition.

Para integrarte con el servicio SCIM de Openreplay, simplemente habilita el aprovisionamiento SCIM en el panel de tu proveedor de identidad. Asegúrate de establecer los siguientes valores para una integración fluida:

VariableDescripción
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 su valor se encuentra en el Dashboard, en ‘Preferences’ > ‘Account’
Client secretSu valor se puede encontrar ejecutando esta consulta en tu base de datos Postgres: SELECT tenant_secret FROM tenants WHERE tenant_key = 'TENANT_KEY';

Después de establecer estos valores, sigue las indicaciones del panel de tu proveedor de identidad para probar la integración y autorizar la aplicación.

A continuación, podrás aprovisionar identidades de usuario usando Openreplay como proveedor de servicios SCIM.

Nota: Aunque Openreplay actúa como proveedor de servicios SCIM, no admite la partición de usuarios en varios grupos (es decir, cada usuario solo puede pertenecer a un grupo). Si no se respeta esto, un usuario podría ser asignado a menos o más proyectos de los esperados y podría tener menos o más permisos en la aplicación de Openreplay.

En tu aplicación SAML 2.0, haz lo siguiente

Añadir aprovisionamiento SCIM

Section titled Añadir aprovisionamiento SCIM
  1. Haz clic en la pestaña General
  2. En la sección App Settings, haz clic en Edit
  3. En el campo Provisioning, selecciona SCIM y haz clic en Save

Elegir opciones de aprovisionamiento

Section titled Elegir opciones de aprovisionamiento
  1. Haz clic en la pestaña Provisioning. La configuración de la conexión SCIM aparece en Settings > Integration.
  2. En Settings > Integration, haz clic en Edit.
  3. Especifica el SCIM connector base URL y el nombre del campo del identificador único de tus usuarios mencionado anteriormente.
  4. En Supported provisioning actions, elige las acciones de aprovisionamiento mencionadas anteriormente.
  5. Establece el menú desplegable Authentication Mode en el valor mencionado anteriormente.
  6. Establece el Access token endpoint, Authorization endpoint, Client id y Client secret como se mencionó anteriormente.
  7. Haz clic en Save.
  8. Haz clic en Authentiate application.
  9. En la pestaña Provisioning, haz clic en To App.
  10. Haz clic en Edit, habilita Create Users, Update User Attributes, Deactivate Users y guarda los cambios.
  • Antes de comenzar el siguiente paso, te recomendamos crear nuevos grupos en Okta, llamados OpenReplay-admin donde enumeres a los usuarios con privilegios de administrador en OpenReplay, y OpenReplay-members donde enumeres a los usuarios con el rol member en OpenReplay, …
  1. Ve a la pestaña Push Groups, haz clic en + Push Groups (por nombre o por regla), selecciona el grupo que quieres enviar a OpenReplay y pulsa save
  • En este punto, los grupos enviados representan roles y privilegios de administrador en OpenReplay, y no contienen la lista de usuarios aprovisionados para OpenReplay.
  1. Ve a la pestaña Assignmets y añade usuarios de la manera que más te convenga (usando personas o grupos)

La respuesta se recibió en http en lugar de https

Section titled La respuesta se recibió en http en lugar de https

Esto es muy común y se debe a que el encabezado ‘X-Forwarded-Proto’ no está presente en la solicitud. Para resolverlo, asegúrate de que el balanceador de carga reenvíe correctamente el encabezado al backend de OpenReplay, y ejecuta openreplay -e; en la sección ingress-nginx > config, descomenta la línea use-forwarded-headers: true.