Skip to Content

Protocollo SCIM 2.0

Il Problema: Il Provisioning Manuale Non Scala

Quando un’azienda assume un nuovo dipendente, quella persona ha bisogno di account in decine di sistemi. Quando quel dipendente lascia, tutti quegli account devono essere disattivati — immediatamente, non “quando qualcuno se ne ricorda.”

Il provisioning manuale crea tre categorie di problemi:

ProblemaImpatto
Ritardo onboardingI nuovi assunti aspettano ore o giorni per la creazione degli account
Lacune nel deprovisioningI dipendenti uscenti mantengono l’accesso ai sistemi perché qualcuno si è dimenticato di rimuoverlo
Account orfaniGli account che non appartengono a nessuno si accumulano nel tempo
Attribute driftIl reparto, titolo o manager di un utente cambia nelle HR ma non nei sistemi downstream
Rischio complianceI revisori chiedono “dimostra che il dipendente X ha perso accesso entro 24 ore”
Carico ITIl provisioning e deprovisioning è un lavoro ripetitivo che scala linearmente con gli organici

Cosa Risolve SCIM

SCIM (System for Cross-domain Identity Management) è un’API REST standardizzata per il provisioning degli utenti, definita in due RFC:

  • RFC 7643: Lo Schema Core SCIM — definisce il modello dati (User, Group, EnterpriseUser)
  • RFC 7644: Il Protocollo SCIM — definisce le operazioni REST, filtraggio, paginazione e operazioni bulk

SCIM fornisce un linguaggio comune a ogni identity provider e a ogni service provider.

SCIM è un protocollo di provisioning inbound in Auris. L’IdP spinge le modifiche ad Auris — Auris non fa polling all’IdP. Questo significa che il provisioning è quasi in tempo reale.

Tipi di Risorsa SCIM

Utenti (/Users)

{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "usr_abc123", "externalId": "okta-user-id-456", "userName": "[email protected]", "name": { "givenName": "Jane", "familyName": "Doe", "formatted": "Jane Doe" }, "emails": [{ "value": "[email protected]", "type": "work", "primary": true }], "displayName": "Jane Doe", "active": true, "title": "Senior Engineer", "department": "Engineering" }

Gruppi (/Groups)

{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "grp_xyz789", "displayName": "Engineering", "members": [ { "value": "usr_abc123", "display": "Jane Doe" }, { "value": "usr_def456", "display": "John Smith" } ] }

I gruppi in SCIM si mappano a ruoli o team nei sistemi downstream. Auris mappa i Gruppi SCIM ai gruppi Keycloak.

Operazioni SCIM

Crea Utente

POST /scim/v2/Users Content-Type: application/scim+json Authorization: Bearer scim_token_here { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "externalId": "okta-user-789", "userName": "[email protected]", "name": { "givenName": "Jane", "familyName": "Doe" }, "emails": [{ "value": "[email protected]", "type": "work", "primary": true }], "active": true }

Risposta: 201 Created con la risorsa User completa incluso l’id assegnato da Auris.

Aggiornamento Parziale (PATCH)

SCIM PATCH usa un formato di operazione specifico:

PATCH /scim/v2/Users/usr_abc123 Content-Type: application/scim+json Authorization: Bearer scim_token_here { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ { "op": "replace", "path": "active", "value": false }, { "op": "replace", "path": "name.familyName", "value": "Smith" } ] }

PATCH è l’operazione più comune per il deprovisioning: l’IdP invia { "op": "replace", "path": "active", "value": false } per disabilitare l’utente senza cancellare il record.

Elimina Utente

DELETE /scim/v2/Users/usr_abc123

Risposta: 204 No Content. In Auris, DELETE esegue una disabilitazione soft (imposta active: false) piuttosto che la cancellazione permanente, preservando l’integrità del trail di audit.

Filtraggio (RFC 7644)

SCIM definisce una sintassi per le espressioni di filtro. Auris implementa un parser ricorsivo discendente.

Operatori di Filtro

OperatoreSignificatoEsempio
eqUgualeuserName eq "[email protected]"
neNon ugualeactive ne false
coContieneuserName co "jane"
swInizia conuserName sw "jane"
ewTermina conemails.value ew "@company.com"
prPresente (ha valore)title pr
gtMaggiore dimeta.lastModified gt "2025-01-01T00:00:00Z"
ltMinore dimeta.created lt "2025-06-01T00:00:00Z"

Filtri Composti

filter=userName eq "[email protected]" and active eq true filter=(department eq "Engineering") or (department eq "Product")

Paginazione

ParametroDescrizioneDefault
startIndexIndice 1-based del primo risultato da restituire1
countNumero massimo di risultati per pagina100
totalResultsNumero totale di risorse corrispondenti (in risposta)—

Autenticazione Bearer Token

Gli endpoint SCIM in Auris sono protetti da autenticazione bearer token. Ogni connessione SCIM ha un token univoco configurato nella Console Auris.

Misura di SicurezzaDescrizione
Hashing del tokenI token sono memorizzati come hash SHA-256, non in chiaro
Isolamento per tenantOgni token è vincolato a uno specifico tenant
Audit loggingOgni operazione SCIM è registrata con l’ID della connessione
Allowlisting IPOpzionale: limita l’accesso SCIM agli IP sorgente dell’IdP

Implementazione SCIM di Auris

Dual Write: Auris + Keycloak

Quando un SCIM POST crea un utente, Auris esegue un dual write:

  1. Database Auris: Crea un record TenantUser con scimExternalId (l’identificatore dell’IdP) e scimUserName
  2. Keycloak: Crea un utente nel realm Keycloak del tenant con attributi corrispondenti

Entrambe le scritture devono avere successo. Se la creazione in Keycloak fallisce, il record Auris viene ripristinato.

Operazioni Bulk

Auris supporta le operazioni Bulk SCIM (RFC 7644) per il provisioning in batch:

POST /scim/v2/Bulk Content-Type: application/scim+json Authorization: Bearer scim_token_here { "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"], "Operations": [ { "method": "POST", "path": "/Users", "data": { "userName": "[email protected]", "name": { "givenName": "Alice", "familyName": "Johnson" }, "active": true } }, { "method": "PATCH", "path": "/Users/usr_old_employee", "data": { "Operations": [{ "op": "replace", "path": "active", "value": false }] } } ] }

Auris applica un massimo di 100 operazioni per richiesta bulk. Ogni operazione viene elaborata indipendentemente — un fallimento in un’operazione non impedisce alle altre di avere successo.

Le operazioni bulk sono particolarmente utili durante il provisioning iniziale, quando un IdP sincronizza l’intera directory utenti ad Auris per la prima volta.

Confronto: Approcci al Provisioning

DimensioneSCIM 2.0Provisioning ManualeJIT ProvisioningSync LDAP
Velocità provisioningQuasi in tempo reale (secondi)Ore o giorniSolo al primo loginSchedulato (minuti/ore)
Velocità deprovisioningQuasi in tempo realeOre/giorni (se ricordato)MaiProssimo ciclo di sync
Sync attributiPush in tempo realeAggiornamenti manualiSolo al loginBatch schedulato
Rischio account orfaniBasso (deprovisioning automatico)Alto (errore umano)Alto (nessun deprovisioning)Medio
StandardizzazioneRFC 7643/7644 (universale)Proprietario per appProprietario per IdPProtocollo LDAP

Sicurezza

Gestione del Bearer Token

I bearer token SCIM sono segreti a lunga durata che concedono accesso completo al provisioning. Trattali con la stessa cura delle credenziali del database.

PraticaDescrizione
Rotazione regolareGenera un nuovo token e aggiorna la configurazione dell’IdP trimestralmente
Archiviazione sicuraNon committare mai i token SCIM nel source control o nei log
Monitoraggio utilizzoAuris registra ogni operazione SCIM con l’ID della connessione

Allowlisting IP

Per la massima sicurezza, limita l’accesso agli endpoint SCIM agli intervalli IP sorgente del tuo IdP usando le Regole IP di Auris.

Concetti Correlati

  • Multi-Tenancy — Come l’isolamento dei tenant si applica alle connessioni SCIM e agli utenti provisioning
  • Hosted Login — Il flusso di login attraverso cui gli utenti provisioning via SCIM si autenticano
  • OAuth 2.0 & OIDC — Il protocollo di autenticazione usato dopo che SCIM ha effettuato il provisioning dell’utente
  • MFA Adattivo & Risk Scoring — Policy di sicurezza applicate agli utenti provisioning via SCIM al momento del login