Skip to Content

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:

  1. Se añade un nuevo empleado en Okta (u otro IdP).
  2. Okta envía una solicitud POST /scim/v2/Users a Auris con los atributos del empleado.
  3. Auris crea al usuario tanto en su base de datos como en el realm subyacente de Keycloak.
  4. Cuando el empleado es deshabilitado en Okta (por ejemplo, tras su baja), Okta envía un PATCH /scim/v2/Users/[id] con "active": false.
  5. Auris deshabilita al usuario e invalida todas las sesiones activas.
  6. Cuando el registro del empleado se elimina en Okta, Okta envía DELETE /scim/v2/Users/[id].
  7. 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:

POST/api/scim/connectionsRequires: manage:scim_connections

Crea 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.

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.

GET/scim/v2/Users

Lista usuarios. Soporta filtrado SCIM, paginación (startIndex, count) y selección de atributos (attributes, excludedAttributes).

POST/scim/v2/Users

Crea un usuario. Auris mapea los atributos SCIM a los campos de usuario de Auris y crea el registro tanto en Auris como en Keycloak.

GET/scim/v2/Users/[id]

Recupera un único usuario por ID externo SCIM.

PUT/scim/v2/Users/[id]

Reemplaza todos los atributos de un usuario. Los campos no incluidos en el cuerpo de la solicitud se borran.

PATCH/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.

DELETE/scim/v2/Users/[id]

Desactiva y elimina temporalmente a un usuario. Las sesiones se revocan inmediatamente.

POST/scim/v2/Bulk

Procesa 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 SCIMCampo AurisNotas
userNameusernameTambién almacenado como scimUserName para deduplicación
emails[0].value (primario)email
name.givenNamefirstName
name.familyNamelastName
activeenabledfalse activa la revocación inmediata de sesiones
externalIdscimExternalIdAlmacenado 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.

GET/api/scim/connections/[id]/mappingsRequires: manage:scim_connections

Lista todos los mapeos de atributos para una conexión.

POST/api/scim/connections/[id]/mappingsRequires: manage:scim_connections

Crea 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ónSignificado
INBOUNDAtributo SCIM → campo Auris (usado durante el aprovisionamiento)
OUTBOUNDCampo Auris → atributo SCIM (usado cuando el IdP consulta Auris)
BIDIRECTIONALAmbas 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:

OperadorSignificado
eqIgual
neNo igual
coContiene
swComienza con
ewTermina con
gtMayor que
ltMenor que
geMayor que o igual
leMenor que o igual
prEl 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.

GET/api/scim/connections/[id]/statsRequires: manage:scim_connections

Devuelve 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ónPermiso
Crear/actualizar/eliminar conexiones SCIMmanage:scim_connections
Ver conexiones SCIM y estadísticasview:scim_connections
Ver registros de actividad SCIMview:scim_logs
Endpoints del protocolo SCIMBearer token (no se requiere permiso de Auris)

Páginas Relacionadas