SSO Empresarial por Organización
El Single Sign-On (SSO) empresarial permite que cada organización en Auris delegue la autenticación a su propio proveedor de identidad corporativo. Cuando un usuario inicia sesión con una dirección de email perteneciente a un dominio verificado, Auris lo redirige automáticamente al IdP de su organización en lugar de mostrar el formulario estándar de usuario y contraseña. Tras una autenticación exitosa en el IdP, el usuario regresa a Auris y se vincula a una cuenta existente o se aprovisiona automáticamente mediante la creación de usuario justo a tiempo (JIT).
Esta funcionalidad está diseñada para productos SaaS B2B donde los clientes empresariales requieren que sus empleados se autentiquen exclusivamente a través de credenciales gestionadas por la empresa.
Protocolos Soportados
Auris soporta dos protocolos SSO, ambos implementados a través de la funcionalidad de broker de identidad de Keycloak:
SAML 2.0 — Security Assertion Markup Language. Utilizado por IdPs empresariales como Microsoft Azure AD (Entra ID), Okta, ADFS, Ping Identity y Shibboleth. SAML utiliza aserciones basadas en XML firmadas con certificados X.509.
OIDC (OpenID Connect) — Una capa de identidad moderna sobre OAuth 2.0. Utilizado por Google Workspace, Okta (como proveedor OIDC), Microsoft Azure AD (también soporta OIDC) y cualquier servidor de autorización OAuth 2.0 con un endpoint de descubrimiento OIDC.
Verificación de Dominio
Antes de que una conexión SSO pueda activarse, la organización debe demostrar la propiedad del dominio de email. Esto evita que una organización intercepte los inicios de sesión de un dominio que no le pertenece.
La verificación utiliza un registro DNS TXT:
- Auris genera un token de verificación único para el dominio.
- El administrador DNS de la organización crea un registro TXT:
_auris-verify.domain.comcon el token como valor. - Un administrador hace clic en “Verificar” en la Consola (o llama a la API de verificación).
- Auris realiza una consulta DNS para el registro TXT y confirma que el token coincide.
/api/organizations/[orgId]/sso/domainsRequires: manage:sso_connectionsAgrega un dominio para verificar en SSO. Devuelve el token de verificación que debe añadirse al DNS.
{
"domain": "acme.com"
}Respuesta:
{
"id": "dom_01HX...",
"domain": "acme.com",
"verificationToken": "auris-verify=a1b2c3d4e5f6...",
"verificationMethod": "TXT",
"status": "PENDING"
}Registro DNS a crear:
_auris-verify.acme.com TXT "auris-verify=a1b2c3d4e5f6..."/api/organizations/[orgId]/sso/domains/[domainId]/checkRequires: manage:sso_connectionsDispara una verificación DNS. Devuelve el estado actualizado del dominio: PENDING, ACTIVE o FAILED.
La propagación DNS puede tardar hasta 48 horas, aunque la mayoría de los cambios se propagan en pocos minutos. Si la verificación falla inmediatamente después de agregar el registro, espera unos minutos e inténtalo de nuevo.
Configuración SAML 2.0
Obtener los metadatos del IdP
Del IdP de tu cliente, obtén uno de los siguientes:
- Una URL de metadatos — una URL que sirve el XML de metadatos SAML del IdP (preferida, ya que auto-actualiza los certificados)
- Un archivo XML de metadatos — una copia descargada de los metadatos
Los metadatos contienen el Entity ID, la URL de SSO y el certificado de firma.
Crear la conexión SSO
/api/organizations/[orgId]/sso/connectionsRequires: manage:sso_connectionsCrea una nueva conexión SSO para la organización.
{
"type": "SAML",
"name": "Acme Azure AD",
"config": {
"entityId": "https://sts.windows.net/tenant-id-here/",
"ssoUrl": "https://login.microsoftonline.com/tenant-id/saml2",
"certificate": "MIICIjANBgkq...",
"signRequests": true,
"nameIdFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
}
}Campos de configuración SAML:
| Campo | Requerido | Notas |
|---|---|---|
entityId | Sí | El Entity ID del IdP de sus metadatos |
ssoUrl | Sí | La URL del endpoint SSO SAML del IdP |
certificate | Sí | El certificado de firma X.509 del IdP (codificado en PEM, sin encabezados) |
signRequests | No | Si se deben firmar las solicitudes SAML salientes (por defecto: true) |
nameIdFormat | No | Formato NameID preferido. Por defecto emailAddress |
Configurar el mapeo de atributos
Mapea los atributos de la aserción SAML a los campos de usuario de Auris:
{
"attributeMapping": {
"email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"firstName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
"lastName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"
}
}Proporcionar los metadatos SP de Auris al IdP
Después de crear la conexión, Auris genera los metadatos del Proveedor de Servicios (SP) que tu cliente debe registrar en su IdP:
- SP Entity ID:
https://auth.yourapp.com/saml/org-slug - ACS URL (Assertion Consumer Service):
https://auth.yourapp.com/saml/org-slug/callback - URL de metadatos SP:
https://auth.yourapp.com/saml/org-slug/metadata
Comparte la URL de metadatos SP con el administrador de TI de tu cliente. La mayoría de los IdPs empresariales aceptan una URL de metadatos directamente.
Activar la conexión
/api/organizations/[orgId]/sso/connections/[id]/activateRequires: manage:sso_connectionsActiva la conexión SSO. La verificación del dominio debe estar completa antes de la activación.
Configuración OIDC
Obtener la configuración OIDC
Del proveedor OIDC del cliente, necesitas:
- URL de descubrimiento (preferida):
https://provider.example.com/.well-known/openid-configuration - O manualmente: Endpoint de autorización, Endpoint de token, JWKS URI, Client ID, Client Secret
Crear la conexión SSO
{
"type": "OIDC",
"name": "Acme Google Workspace",
"config": {
"discoveryUrl": "https://accounts.google.com/.well-known/openid-configuration",
"clientId": "123456789-abc.apps.googleusercontent.com",
"clientSecret": "GOCSPX-...",
"scopes": ["openid", "profile", "email"],
"pkce": true
}
}Campos de configuración OIDC:
| Campo | Requerido | Notas |
|---|---|---|
discoveryUrl | Recomendado | Endpoint de descubrimiento OIDC. Si se proporciona, los demás endpoints se infieren automáticamente |
authorizationUrl | Si no hay discoveryUrl | Endpoint de autorización OAuth2 |
tokenUrl | Si no hay discoveryUrl | Endpoint de token OAuth2 |
jwksUrl | Si no hay discoveryUrl | Endpoint JWKS para verificación de tokens |
clientId | Sí | El client ID OAuth2 registrado en el IdP |
clientSecret | Sí | El client secret OAuth2 |
scopes | No | Por defecto ["openid", "profile", "email"] |
pkce | No | Habilita PKCE para el flujo OIDC (recomendado, por defecto: true) |
Registrar la URI de redirección de Auris en el IdP
Proporciona esta URI de redirección al registrar la aplicación Auris en el IdP del cliente:
https://auth.yourapp.com/oidc/org-slug/callbackActivar la conexión
Igual que con SAML — la verificación del dominio debe completarse antes de la activación.
Flujo de Login SSO
Una vez que una conexión SSO está activa y un dominio verificado, el flujo de inicio de sesión cambia para los usuarios con direcciones de email coincidentes:
- El usuario introduce su email en la página de Login Alojado de Auris.
- Auris llama al endpoint de detección SSO:
/api/auth/sso/detectAcepta una dirección de email y devuelve los detalles de la conexión SSO si existe una conexión activa para el dominio del email.
{ "email": "[email protected]" }Respuesta cuando SSO está configurado:
{
"ssoRequired": true,
"connectionType": "SAML",
"organizationName": "Acme Corporation",
"loginUrl": "/api/auth/sso/login/acme-azure-ad"
}- Auris redirige al usuario al IdP a través de:
/api/auth/sso/login/[alias]Inicia el flujo SSO redirigiendo al usuario al IdP configurado.
-
El usuario se autentica en su IdP corporativo.
-
El IdP redirige de vuelta a Auris:
/api/auth/sso/callbackRecibe la aserción SAML o el código de autorización OIDC. Valida la respuesta, resuelve o crea el usuario de Auris, y emite los tokens de Auris.
- Auris emite su propio access token y refresh token. A partir de este punto, la sesión SSO es independiente — los tiempos de vida de los tokens de Auris se rigen por la configuración de Auris, no por la sesión del IdP.
Aprovisionamiento de Usuarios Justo a Tiempo (JIT)
Si un usuario se autentica correctamente en el IdP pero no tiene una cuenta de Auris existente, Auris crea una automáticamente durante el callback SSO. Esto se denomina aprovisionamiento justo a tiempo.
El aprovisionamiento JIT crea al usuario con:
- Email, firstName y lastName de la respuesta del IdP o la aserción SAML
- Membresía en la organización asociada a la conexión SSO
- El rol predeterminado configurado para usuarios aprovisionados por JIT (configurable por conexión, por defecto MEMBER)
La cuenta del usuario persiste después del primer inicio de sesión — los inicios de sesión posteriores se resuelven en la misma cuenta.
El aprovisionamiento JIT crea usuarios con el rol MEMBER por defecto. Si tu aplicación requiere roles elevados para algunos usuarios, utiliza el aprovisionamiento SCIM además del SSO para pre-aprovisionar usuarios con los roles correctos antes de su primer inicio de sesión.
Múltiples Conexiones SSO por Organización
Una organización puede tener múltiples conexiones SSO activas — por ejemplo, SAML para una implementación de Azure AD y OIDC para un subconjunto de usuarios en Google Workspace.
El endpoint de detección SSO hace coincidir en base al dominio de email verificado. Si múltiples conexiones comparten el mismo dominio, la conexión activada más recientemente tiene prioridad. En la práctica, cada conexión SSO debe asociarse a dominios verificados distintos para evitar ambigüedades.
Gestión de Conexiones SSO
/api/organizations/[orgId]/sso/connectionsRequires: view:sso_connectionsLista todas las conexiones SSO de una organización.
/api/organizations/[orgId]/sso/connections/[id]Requires: view:sso_connectionsObtiene una conexión SSO específica con su estado actual y configuración.
/api/organizations/[orgId]/sso/connections/[id]Requires: manage:sso_connectionsActualiza una conexión SSO. Puedes actualizar los campos de configuración, el nombre o los mapeos de atributos sin desactivar la conexión.
/api/organizations/[orgId]/sso/connections/[id]/deactivateRequires: manage:sso_connectionsDesactiva la conexión SSO. Los usuarios con dominios de email coincidentes ya no serán redirigidos al IdP. Vuelven a la autenticación estándar de Auris.
/api/organizations/[orgId]/sso/connections/[id]Requires: manage:sso_connectionsElimina permanentemente la conexión SSO. Las cuentas de usuario existentes creadas mediante aprovisionamiento JIT no se eliminan.
Guía en la Consola
La gestión del SSO está disponible en la página de detalle de la organización en la Consola de Administración, bajo la pestaña “Enterprise SSO”.
Agregar una conexión SAML:
- Navega a Consola de Administración → Organizaciones → [Nombre de la org] → Enterprise SSO.
- Haz clic en “Agregar conexión SSO”. Selecciona SAML 2.0.
- Introduce la URL de metadatos del IdP o pega el XML.
- Revisa la configuración analizada (Entity ID, URL de SSO, certificado).
- Guarda. La conexión se crea en estado inactivo.
- Navega a la pestaña “Dominios” y agrega el dominio de email de la organización.
- Agrega el registro DNS TXT y haz clic en “Verificar dominio”.
- Una vez verificado el dominio, regresa a la pestaña SSO y haz clic en “Activar”.
Agregar una conexión OIDC:
El mismo flujo, pero el formulario solicita la URL de descubrimiento, el Client ID y el Client Secret. Auris obtiene el documento de descubrimiento automáticamente y rellena los campos restantes.
Permisos Requeridos
| Operación | Permiso |
|---|---|
| Ver conexiones SSO | view:sso_connections |
| Crear / actualizar / eliminar conexiones SSO | manage:sso_connections |
| Gestionar la verificación de dominio | manage:sso_connections |
Páginas Relacionadas
- Organizaciones B2B Multi-Tenant — Configuración de organizaciones, roles de miembros e invitaciones
- Aprovisionamiento SCIM 2.0 — Aprovisionamiento automático de usuarios como complemento al SSO
- Login Alojado — Cómo la página de Login Alojado se integra con la detección SSO
- Consola: Organizaciones — Guía completa en la Consola