Skip to Content

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:

  1. Un nuovo dipendente viene aggiunto in Okta (o un altro IdP).
  2. Okta invia una richiesta POST /scim/v2/Users ad Auris con gli attributi del dipendente.
  3. Auris crea l’utente sia nel suo database che nel realm Keycloak sottostante.
  4. Quando il dipendente viene disabilitato in Okta (es. dopo le dimissioni), Okta invia una PATCH /scim/v2/Users/[id] con "active": false.
  5. Auris disabilita l’utente e invalida tutte le sessioni attive.
  6. Quando il record del dipendente viene eliminato in Okta, Okta invia DELETE /scim/v2/Users/[id].
  7. 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:

POST/api/scim/connectionsRequires: manage:scim_connections

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

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.

GET/scim/v2/Users

Elenca gli utenti. Supporta filtraggio SCIM, paginazione (startIndex, count) e selezione degli attributi (attributes, excludedAttributes).

POST/scim/v2/Users

Crea un utente. Auris mappa gli attributi SCIM ai campi utente di Auris e crea il record sia in Auris che in Keycloak.

GET/scim/v2/Users/[id]

Recupera un singolo utente tramite ID esterno SCIM.

PUT/scim/v2/Users/[id]

Sostituisce tutti gli attributi di un utente. I campi non inclusi nel corpo della richiesta vengono cancellati.

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

DELETE/scim/v2/Users/[id]

Disattiva ed elimina temporaneamente un utente. Le sessioni vengono revocate immediatamente.

POST/scim/v2/Bulk

Elabora 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 SCIMCampo AurisNote
userNameusernameMemorizzato anche come scimUserName per la deduplicazione
emails[0].value (primary)email
name.givenNamefirstName
name.familyNamelastName
activeenabledfalse attiva la revoca immediata delle sessioni
externalIdscimExternalIdMemorizzato 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.

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

Elenca tutte le mappature degli attributi per una connessione.

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

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

DirezioneSignificato
INBOUNDAttributo SCIM → Campo Auris (usato durante il provisioning)
OUTBOUNDCampo Auris → Attributo SCIM (usato quando Auris viene interrogato dall’IdP)
BIDIRECTIONALEntrambe 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:

OperatoreSignificato
eqUguale
neNon uguale
coContiene
swInizia con
ewTermina con
gtMaggiore di
ltMinore di
geMaggiore o uguale
leMinore o uguale
prL’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.

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

Restituisce 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

OperazionePermesso
Crea/aggiorna/elimina connessioni SCIMmanage:scim_connections
Visualizza connessioni SCIM e statisticheview:scim_connections
Visualizza log attività SCIMview:scim_logs
Endpoint del protocollo SCIMBearer token (nessun permesso Auris richiesto)

Pagine Correlate