Aprovisionamiento SCIM 2.0
SCIM (System for Cross-domain Identity Management) es un protocolo estandarizado (RFC 7643/7644) que permite a un proveedor de identidad (IdP) externo enviar eventos del ciclo de vida de usuarios — crear, actualizar, deshabilitar, eliminar — a Auris de forma automática. En lugar de que los administradores gestionen manualmente los usuarios en dos sistemas, el IdP se convierte en la fuente de verdad y Auris refleja su estado en tiempo casi real.
Auris implementa SCIM 2.0 y es compatible con cualquier IdP que soporte el estándar, incluyendo Okta, Microsoft Azure AD (Entra ID), OneLogin, JumpCloud, Google Workspace (mediante un puente SCIM de terceros) y Ping Identity.
Cómo Funciona SCIM
Cuando SCIM está configurado, el IdP actúa como cliente SCIM y Auris actúa como servidor SCIM (proveedor de servicios).
El ciclo de vida típico:
- Se añade un nuevo empleado en Okta (u otro IdP).
- Okta envía una solicitud
POST /scim/v2/Usersa Auris con los atributos del empleado. - Auris crea al usuario tanto en su base de datos como en el realm subyacente de Keycloak.
- Cuando el empleado es deshabilitado en Okta (por ejemplo, tras su baja), Okta envía un
PATCH /scim/v2/Users/[id]con"active": false. - Auris deshabilita al usuario e invalida todas las sesiones activas.
- Cuando el registro del empleado se elimina en Okta, Okta envía
DELETE /scim/v2/Users/[id]. - Auris elimina temporalmente al usuario.
Esto mantiene Auris sincronizado sin ninguna intervención manual del administrador.
Configurar una Conexión SCIM
Crear una conexión SCIM en Auris
En la Consola de Administración, navega a Configuración → Conexiones SCIM y haz clic en “Nueva Conexión”.
Cada conexión genera:
- URL Base SCIM — El endpoint al que llamará tu IdP. Formato:
https://auth.tuapp.com/scim/v2 - Bearer Token — Un secreto con prefijo
scim_utilizado para autenticar las solicitudes del IdP. Copia este token inmediatamente — solo se muestra una vez.
También puedes crear una conexión a través de la API:
/api/scim/connectionsRequires: manage:scim_connectionsCrea una nueva conexión SCIM y devuelve el bearer token. El token no se almacena en texto plano y no puede recuperarse de nuevo tras su creación.
{
"name": "Okta Producción",
"keycloakRealm": "tu-realm"
}Configurar tu IdP
En la configuración SCIM de tu proveedor de identidad, introduce:
- URL Base del Conector SCIM:
https://auth.tuapp.com/scim/v2 - Campo de Identificador Único para Usuarios:
userName - Modo de Autenticación: HTTP Header
- Autorización:
Bearer scim_...
Los pasos exactos varían según el IdP. Consulta la documentación de configuración SCIM de tu IdP para los nombres de campos específicos del proveedor.
Okta
En Okta, navega a Aplicaciones → [Tu App] → Aprovisionamiento → Integración. Habilita “Habilitar integración API” e introduce la URL base y el token. En “A la App”, habilita Crear, Actualizar y Desactivar.
Verificar la conexión
En la Consola de Auris, usa el botón “Probar Conexión” en la tarjeta de conexión SCIM. Esto envía una solicitud de prueba para verificar que Auris puede recibir solicitudes SCIM autenticadas.
También puedes probar la conectividad desde tu IdP — la mayoría de los IdP tienen un botón incorporado de “Probar Conexión” o “Verificar” en su configuración SCIM.
Endpoints SCIM
Todos los endpoints SCIM están montados bajo /scim/v2. Requieren un token Bearer que corresponda a una conexión SCIM activa. Se soporta el Content-Type: application/scim+json estándar de SCIM.
/scim/v2/UsersLista usuarios. Soporta filtrado SCIM, paginación (startIndex, count) y selección de atributos (attributes, excludedAttributes).
/scim/v2/UsersCrea un usuario. Auris mapea los atributos SCIM a los campos de usuario de Auris y crea el registro tanto en Auris como en Keycloak.
/scim/v2/Users/[id]Recupera un único usuario por ID externo SCIM.
/scim/v2/Users/[id]Reemplaza todos los atributos de un usuario. Los campos no incluidos en el cuerpo de la solicitud se borran.
/scim/v2/Users/[id]Actualiza parcialmente un usuario usando operaciones de parche SCIM. Soporta operaciones add, remove y replace. Los IdP lo usan para actualizar atributos individuales o establecer active: false para deshabilitar un usuario.
/scim/v2/Users/[id]Desactiva y elimina temporalmente a un usuario. Las sesiones se revocan inmediatamente.
/scim/v2/BulkProcesa hasta 100 operaciones SCIM en una sola solicitud. Cada operación se procesa de forma independiente — un fallo en una operación no afecta a las demás.
Los endpoints SCIM se autentican mediante el bearer token de la conexión, no mediante un JWT de usuario. El permiso manage:scim_connections controla el acceso a la API de gestión de Auris para las conexiones SCIM — los propios endpoints del protocolo SCIM solo se autentican mediante el bearer token.
Mapeo de Atributos
Por defecto, Auris aplica mapeos estándar de atributos SCIM a Auris. Puedes personalizar estos mapeos por conexión en la pestaña Mapeos de la Consola.
Mapeos por Defecto
| Atributo SCIM | Campo Auris | Notas |
|---|---|---|
userName | username | También almacenado como scimUserName para deduplicación |
emails[0].value (primario) | email | |
name.givenName | firstName | |
name.familyName | lastName | |
active | enabled | false activa la revocación inmediata de sesiones |
externalId | scimExternalId | Almacenado para vinculación estable entre sistemas |
Mapeos Personalizados
Los mapeos de atributos personalizados te permiten mapear atributos SCIM no estándar a campos de usuario de Auris. Por ejemplo, si tu IdP envía urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department y quieres almacenarlo en metadata.department.
/api/scim/connections/[id]/mappingsRequires: manage:scim_connectionsLista todos los mapeos de atributos para una conexión.
/api/scim/connections/[id]/mappingsRequires: manage:scim_connectionsCrea un mapeo de atributos personalizado.
{
"scimAttribute": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department",
"aurisAttribute": "metadata.department",
"direction": "INBOUND",
"isActive": true
}Direcciones de mapeo:
| Dirección | Significado |
|---|---|
INBOUND | Atributo SCIM → campo Auris (usado durante el aprovisionamiento) |
OUTBOUND | Campo Auris → atributo SCIM (usado cuando el IdP consulta Auris) |
BIDIRECTIONAL | Ambas direcciones |
Soporte de Filtros
Auris implementa el filtrado SCIM del §3.4.2.2 del RFC 7644. La mayoría de los IdP usan filtros para buscar usuarios antes de crearlos o actualizarlos.
Operadores soportados:
| Operador | Significado |
|---|---|
eq | Igual |
ne | No igual |
co | Contiene |
sw | Comienza con |
ew | Termina con |
gt | Mayor que |
lt | Menor que |
ge | Mayor que o igual |
le | Menor que o igual |
pr | El atributo está presente (no nulo) |
Filtros de ejemplo:
# Buscar usuario por email
/scim/v2/Users?filter=emails eq "[email protected]"
# Buscar por userName
/scim/v2/Users?filter=userName eq "alice"
# Buscar usuarios activos en un departamento (con extensión de esquema enterprise)
/scim/v2/Users?filter=active eq true and urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department eq "engineering"Los filtros soportan combinadores and/or y paréntesis para agrupación. Las rutas de atributos con notación de punto (ej. name.givenName) se resuelven correctamente.
Estadísticas de Sincronización
La Consola proporciona un desglose de la actividad de sincronización SCIM por conexión, visible en la pestaña Stats de la página de detalle de cada conexión.
/api/scim/connections/[id]/statsRequires: manage:scim_connectionsDevuelve recuentos de sincronización desglosados por período (24h, 7d, 30d) y tipo de operación (creates, updates, deletes, errors).
Respuesta:
{
"periods": {
"24h": { "created": 12, "updated": 8, "deleted": 1, "errors": 0 },
"7d": { "created": 45, "updated": 33, "deleted": 4, "errors": 2 },
"30d": { "created": 180, "updated": 112, "deleted": 9, "errors": 5 }
}
}Operaciones en Bloque
El endpoint de Bulk SCIM permite a un IdP enviar hasta 100 operaciones en una sola solicitud HTTP. Esto reduce la sobrecarga de red durante eventos de aprovisionamiento masivo (por ejemplo, una sincronización de directorio a nivel organizacional).
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
"Operations": [
{
"method": "POST",
"path": "/Users",
"bulkId": "bulk-1",
"data": {
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "[email protected]",
"name": { "givenName": "Nuevo", "familyName": "Usuario" },
"emails": [{ "value": "[email protected]", "primary": true }]
}
},
{
"method": "PATCH",
"path": "/Users/scim-ext-id-123",
"data": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{ "op": "replace", "path": "active", "value": false }]
}
}
]
}Respuesta de Bulk:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkResponse"],
"Operations": [
{ "method": "POST", "bulkId": "bulk-1", "status": { "code": 201 } },
{ "method": "PATCH", "location": "/scim/v2/Users/scim-ext-id-123", "status": { "code": 200 } }
]
}Permisos Requeridos
| Operación | Permiso |
|---|---|
| Crear/actualizar/eliminar conexiones SCIM | manage:scim_connections |
| Ver conexiones SCIM y estadísticas | view:scim_connections |
| Ver registros de actividad SCIM | view:scim_logs |
| Endpoints del protocolo SCIM | Bearer token (no se requiere permiso de Auris) |
Páginas Relacionadas
- Gestión de Usuarios — Gestión manual de usuarios a través de la API y la Consola
- Importación y Exportación de Usuarios — Importación masiva puntual desde CSV o JSON
- Organizaciones: SSO Empresarial — SSO por organización para clientes B2B
- Consola: Conexiones SCIM — Guía completa de la Consola