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:
| Problema | Impatto |
|---|---|
| Ritardo onboarding | I nuovi assunti aspettano ore o giorni per la creazione degli account |
| Lacune nel deprovisioning | I dipendenti uscenti mantengono l’accesso ai sistemi perché qualcuno si è dimenticato di rimuoverlo |
| Account orfani | Gli account che non appartengono a nessuno si accumulano nel tempo |
| Attribute drift | Il reparto, titolo o manager di un utente cambia nelle HR ma non nei sistemi downstream |
| Rischio compliance | I revisori chiedono “dimostra che il dipendente X ha perso accesso entro 24 ore” |
| Carico IT | Il 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_abc123Risposta: 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
| Operatore | Significato | Esempio |
|---|---|---|
eq | Uguale | userName eq "[email protected]" |
ne | Non uguale | active ne false |
co | Contiene | userName co "jane" |
sw | Inizia con | userName sw "jane" |
ew | Termina con | emails.value ew "@company.com" |
pr | Presente (ha valore) | title pr |
gt | Maggiore di | meta.lastModified gt "2025-01-01T00:00:00Z" |
lt | Minore di | meta.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
| Parametro | Descrizione | Default |
|---|---|---|
startIndex | Indice 1-based del primo risultato da restituire | 1 |
count | Numero massimo di risultati per pagina | 100 |
totalResults | Numero 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 Sicurezza | Descrizione |
|---|---|
| Hashing del token | I token sono memorizzati come hash SHA-256, non in chiaro |
| Isolamento per tenant | Ogni token è vincolato a uno specifico tenant |
| Audit logging | Ogni operazione SCIM è registrata con l’ID della connessione |
| Allowlisting IP | Opzionale: 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:
- Database Auris: Crea un record
TenantUserconscimExternalId(l’identificatore dell’IdP) escimUserName - 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
| Dimensione | SCIM 2.0 | Provisioning Manuale | JIT Provisioning | Sync LDAP |
|---|---|---|---|---|
| Velocità provisioning | Quasi in tempo reale (secondi) | Ore o giorni | Solo al primo login | Schedulato (minuti/ore) |
| Velocità deprovisioning | Quasi in tempo reale | Ore/giorni (se ricordato) | Mai | Prossimo ciclo di sync |
| Sync attributi | Push in tempo reale | Aggiornamenti manuali | Solo al login | Batch schedulato |
| Rischio account orfani | Basso (deprovisioning automatico) | Alto (errore umano) | Alto (nessun deprovisioning) | Medio |
| Standardizzazione | RFC 7643/7644 (universale) | Proprietario per app | Proprietario per IdP | Protocollo 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.
| Pratica | Descrizione |
|---|---|
| Rotazione regolare | Genera un nuovo token e aggiorna la configurazione dell’IdP trimestralmente |
| Archiviazione sicura | Non committare mai i token SCIM nel source control o nei log |
| Monitoraggio utilizzo | Auris 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