SCIM 2.0 Provisioning
SCIM (System for Cross-domain Identity Management) è un protocollo standardizzato (RFC 7643/7644) che consente a un identity provider (IdP) esterno di inviare eventi del ciclo di vita degli utenti — creazione, aggiornamento, disabilitazione, eliminazione — ad Auris automaticamente. Invece di gestire manualmente gli utenti in due sistemi, l’IdP diventa la fonte di verità e Auris riflette il suo stato in tempo quasi reale.
Auris implementa SCIM 2.0 ed è compatibile con qualsiasi IdP che supporti lo standard, tra cui Okta, Microsoft Azure AD (Entra ID), OneLogin, JumpCloud, Google Workspace (tramite bridge SCIM di terze parti) e Ping Identity.
Come Funziona SCIM
Quando SCIM è configurato, l’IdP agisce come client SCIM e Auris agisce come server SCIM (service provider).
Il ciclo di vita tipico:
- Un nuovo dipendente viene aggiunto in Okta (o un altro IdP).
- Okta invia una richiesta
POST /scim/v2/Usersad Auris con gli attributi del dipendente. - Auris crea l’utente sia nel suo database che nel realm Keycloak sottostante.
- Quando il dipendente viene disabilitato in Okta (es. dopo le dimissioni), Okta invia una
PATCH /scim/v2/Users/[id]con"active": false. - Auris disabilita l’utente e invalida tutte le sessioni attive.
- Quando il record del dipendente viene eliminato in Okta, Okta invia
DELETE /scim/v2/Users/[id]. - Auris elimina temporaneamente l’utente.
Questo mantiene Auris sincronizzato senza alcun intervento manuale da parte degli amministratori.
Configurazione di una Connessione SCIM
Crea una connessione SCIM in Auris
Nella Console Admin, vai su Impostazioni → Connessioni SCIM e clicca “Nuova Connessione”.
Ogni connessione genera:
- SCIM Base URL — L’endpoint che il tuo IdP chiamerà. Formato:
https://auth.tuaapp.com/scim/v2 - Bearer Token — Un segreto con prefisso
scim_usato per autenticare le richieste dell’IdP. Copia questo token immediatamente — viene mostrato solo una volta.
Puoi anche creare una connessione tramite API:
/api/scim/connectionsRequires: manage:scim_connectionsCrea una nuova connessione SCIM e restituisce il bearer token. Il token non viene memorizzato in chiaro e non può essere recuperato dopo la creazione.
{
"name": "Okta Produzione",
"keycloakRealm": "il-tuo-realm"
}Configura il tuo IdP
Nella configurazione SCIM del tuo identity provider, inserisci:
- SCIM Connector Base URL:
https://auth.tuaapp.com/scim/v2 - Unique Identifier Field for Users:
userName - Authentication Mode: HTTP Header
- Authorization:
Bearer scim_...
I passaggi esatti differiscono per IdP. Consulta la documentazione di configurazione SCIM del tuo IdP per i nomi dei campi specifici.
Okta
In Okta, vai su Applications → [La Tua App] → Provisioning → Integration. Abilita “Enable API integration” e inserisci la base URL e il token. Sotto “To App”, abilita Create, Update e Deactivate.
Verifica la connessione
Nella Console Auris, usa il pulsante “Testa Connessione” sulla card della connessione SCIM. Questo invia una richiesta di test per verificare che Auris possa ricevere richieste SCIM autenticate.
Puoi anche testare la connettività dal tuo IdP — la maggior parte degli IdP ha un pulsante “Test Connection” o “Verify” incorporato nella configurazione SCIM.
Endpoint SCIM
Tutti gli endpoint SCIM sono montati sotto /scim/v2. Richiedono un token Bearer corrispondente a una connessione SCIM attiva. È supportato il Content-Type: application/scim+json SCIM standard.
/scim/v2/UsersElenca gli utenti. Supporta filtraggio SCIM, paginazione (startIndex, count) e selezione degli attributi (attributes, excludedAttributes).
/scim/v2/UsersCrea un utente. Auris mappa gli attributi SCIM ai campi utente di Auris e crea il record sia in Auris che in Keycloak.
/scim/v2/Users/[id]Recupera un singolo utente tramite ID esterno SCIM.
/scim/v2/Users/[id]Sostituisce tutti gli attributi di un utente. I campi non inclusi nel corpo della richiesta vengono cancellati.
/scim/v2/Users/[id]Aggiorna parzialmente un utente usando le operazioni di patch SCIM. Supporta le operazioni add, remove e replace. Usato dagli IdP per aggiornare attributi individuali o impostare active: false per disabilitare un utente.
/scim/v2/Users/[id]Disattiva ed elimina temporaneamente un utente. Le sessioni vengono revocate immediatamente.
/scim/v2/BulkElabora fino a 100 operazioni SCIM in una singola richiesta. Ogni operazione viene elaborata indipendentemente — un fallimento su un’operazione non influisce sulle altre.
Gli endpoint SCIM si autenticano tramite il bearer token della connessione, non tramite un JWT utente. Il permesso manage:scim_connections controlla l’accesso all’API di management di Auris per le connessioni SCIM — gli endpoint del protocollo SCIM stesso si autenticano solo tramite il bearer token.
Mapping degli Attributi
Di default, Auris applica mappature standard da attributi SCIM a campi Auris. Puoi personalizzare queste mappature per connessione nella scheda Mappature della Console.
Mappature Default
| Attributo SCIM | Campo Auris | Note |
|---|---|---|
userName | username | Memorizzato anche come scimUserName per la deduplicazione |
emails[0].value (primary) | email | |
name.givenName | firstName | |
name.familyName | lastName | |
active | enabled | false attiva la revoca immediata delle sessioni |
externalId | scimExternalId | Memorizzato per il collegamento stabile cross-sistema |
Mappature Personalizzate
Le mappature personalizzate degli attributi consentono di mappare attributi SCIM non standard ai campi utente di Auris. Ad esempio, se il tuo IdP invia urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department e vuoi memorizzarlo in metadata.department.
/api/scim/connections/[id]/mappingsRequires: manage:scim_connectionsElenca tutte le mappature degli attributi per una connessione.
/api/scim/connections/[id]/mappingsRequires: manage:scim_connectionsCrea una mappatura personalizzata degli attributi.
{
"scimAttribute": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department",
"aurisAttribute": "metadata.department",
"direction": "INBOUND",
"isActive": true
}Direzioni delle mappature:
| Direzione | Significato |
|---|---|
INBOUND | Attributo SCIM → Campo Auris (usato durante il provisioning) |
OUTBOUND | Campo Auris → Attributo SCIM (usato quando Auris viene interrogato dall’IdP) |
BIDIRECTIONAL | Entrambe le direzioni |
Supporto dei Filtri
Auris implementa il filtraggio SCIM RFC 7644 §3.4.2.2. La maggior parte degli IdP usa i filtri per cercare gli utenti prima di crearli o aggiornarli.
Operatori supportati:
| Operatore | Significato |
|---|---|
eq | Uguale |
ne | Non uguale |
co | Contiene |
sw | Inizia con |
ew | Termina con |
gt | Maggiore di |
lt | Minore di |
ge | Maggiore o uguale |
le | Minore o uguale |
pr | L’attributo è presente (non null) |
Esempi di filtri:
# Trova un utente per email
/scim/v2/Users?filter=emails eq "[email protected]"
# Trova per userName
/scim/v2/Users?filter=userName eq "alice"
# Trova utenti attivi in un dipartimento (con estensione schema enterprise)
/scim/v2/Users?filter=active eq true and urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department eq "engineering"I filtri supportano i combinatori and/or e le parentesi per il raggruppamento. I percorsi degli attributi con notazione puntata (es. name.givenName) vengono risolti correttamente.
Statistiche di Sincronizzazione
La Console fornisce un riepilogo dell’attività di sincronizzazione SCIM per connessione, visualizzabile nella scheda Statistiche di ogni pagina di dettaglio della connessione.
/api/scim/connections/[id]/statsRequires: manage:scim_connectionsRestituisce i conteggi di sincronizzazione suddivisi per periodo (24h, 7d, 30d) e tipo di operazione (creazioni, aggiornamenti, eliminazioni, errori).
Risposta:
{
"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 }
}
}Operazioni Bulk
L’endpoint SCIM Bulk consente a un IdP di inviare fino a 100 operazioni in una singola richiesta HTTP. Questo riduce il sovraccarico di rete durante grandi eventi di provisioning (es. una sincronizzazione directory a livello organizzazione).
{
"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": "Nuovo", "familyName": "Utente" },
"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 }]
}
}
]
}Permessi Richiesti
| Operazione | Permesso |
|---|---|
| Crea/aggiorna/elimina connessioni SCIM | manage:scim_connections |
| Visualizza connessioni SCIM e statistiche | view:scim_connections |
| Visualizza log attività SCIM | view:scim_logs |
| Endpoint del protocollo SCIM | Bearer token (nessun permesso Auris richiesto) |
Pagine Correlate
- Gestione degli Utenti — Gestione manuale degli utenti tramite API e Console
- Importazione ed Esportazione Utenti — Importazione massiva una tantum da CSV o JSON
- Organizzazioni: Enterprise SSO — SSO per organizzazione per i clienti B2B
- Console: Connessioni SCIM — Guida completa alla Console