Importazione ed Esportazione Utenti
Auris fornisce un sistema asincrono di importazione/esportazione in massa per operazioni di onboarding o migrazione su larga scala. Puoi caricare un file CSV o JSON, monitorare l’avanzamento come job e scaricare un file di export con i dati degli utenti attuali.
Tutti i job vengono elaborati in modo asincrono — se stai importando migliaia di utenti, non devi tenere aperta la connessione.
Importazione di Utenti
Formati di File Supportati
CSV
La prima riga deve essere una riga di intestazione. Le colonne riconosciute sono:
| Colonna | Obbligatoria | Descrizione |
|---|---|---|
email | ✅ | Indirizzo email dell’utente (deve essere univoco) |
username | No | Separato dall’email; generato automaticamente se assente |
firstName | No | |
lastName | No | |
password | No | Testo in chiaro — viene subito hashato. Se assente, l’utente viene creato senza credential. |
roles | No | Pipe-separated: admin|viewer |
email,username,firstName,lastName,password,roles
[email protected],alice,Alice,Rossi,SecurePass1!,admin|viewer
[email protected],bob,Roberto,Bianchi,,viewerJSON
Un array di oggetti con la stessa struttura dei campi CSV:
[
{
"email": "[email protected]",
"username": "alice",
"firstName": "Alice",
"lastName": "Rossi",
"password": "SecurePass1!",
"roles": ["admin", "viewer"]
},
{
"email": "[email protected]",
"firstName": "Roberto",
"lastName": "Bianchi",
"roles": ["viewer"]
}
]Le password vengono trasmesse tramite HTTPS e vengono subito hashate lato server usando l’algoritmo di hashing di Keycloak. Non vengono mai memorizzate in chiaro. Non includere password in file che potrebbero essere memorizzati in sistemi di gestione documenti non sicuri.
Eseguire un’Importazione
Carica il file
/api/users/importRequires: manage:usersCarica un file di importazione CSV o JSON. Restituisce un job ID usato per monitorare l’avanzamento.
Invia come multipart/form-data con il file nel campo file:
curl -X POST https://api.tuaapp.com/api/users/import \
-H "Authorization: Bearer $TOKEN" \
-F "[email protected];type=text/csv"Risposta:
{
"jobId": "import_01jk9x...",
"status": "PENDING",
"totalRows": 250,
"createdAt": "2025-11-15T09:00:00Z"
}Monitora l’avanzamento del job
/api/users/import/[id]Requires: manage:usersRecupera lo stato di un job di importazione specifico.
/api/users/importRequires: manage:usersElenca tutti i job di importazione, con stato e riepilogo degli errori.
Stati del job:
| Stato | Descrizione |
|---|---|
PENDING | Job accodato, elaborazione non ancora iniziata |
PROCESSING | Importazione delle righe in corso |
COMPLETED | Tutte le righe importate con successo |
PARTIAL | Alcune righe sono fallite (vedi errorCount) |
FAILED | Job terminato con un errore irrecuperabile (es. formato file non valido) |
Revisiona i risultati
Una volta che il job raggiunge COMPLETED o PARTIAL, la risposta di stato include il conteggio degli errori e i dettagli per riga:
{
"jobId": "import_01jk9x...",
"status": "PARTIAL",
"totalRows": 250,
"successCount": 247,
"errorCount": 3,
"errors": [
{ "row": 14, "email": "[email protected]", "reason": "Email già esistente" },
{ "row": 37, "email": "invalido-email", "reason": "Formato email non valido" },
{ "row": 102, "email": "[email protected]", "reason": "Username 'bob' già in uso" }
]
}Comportamento dell’Importazione
- Email duplicate: skippate silenziosamente; l’utente esistente non viene modificato.
- Password assente: l’utente viene creato in stato disabled-credentials (può fare login solo tramite link magici o SSO finché non imposta una password).
- Assegnazione ruoli: i ruoli vengono assegnati dopo la creazione dell’utente. Se un nome ruolo non esiste, quella riga fallisce.
- Elaborazione transazionale: le righe vengono elaborate indipendentemente — un fallimento su una riga non fa rollback di quelle già importate con successo.
Esportazione degli Utenti
/api/users/exportRequires: manage:usersAvvia un job di esportazione. Restituisce un job ID. Il file di export viene generato in modo asincrono.
/api/users/exportRequires: manage:usersElenca tutti i job di esportazione con stato e data di scadenza.
/api/users/export/[id]/downloadRequires: manage:usersScarica il file di export completato. Restituisce un CSV con tutti i campi esportabili. Disponibile finché il file non è scaduto.
Campi di Esportazione
Il file CSV di export include le seguenti colonne:
| Campo | Descrizione |
|---|---|
id | UUID interno dell’utente Auris |
email | Indirizzo email |
username | Username (se impostato) |
firstName | |
lastName | |
enabled | true o false |
roles | Elenco separato da pipe dei ruoli assegnati |
createdAt | Timestamp ISO 8601 |
lastLogin | Timestamp ISO 8601, o vuoto se l’utente non ha mai fatto login |
metadata | Serializzato come stringa JSON |
Gli hash delle password non vengono mai inclusi negli export, indipendentemente dalle autorizzazioni. Se stai migrando utenti verso un altro sistema di autenticazione, dovrai forzare un reset della password o usare un metodo di autenticazione alternativo.
I file di export scadono dopo 7 giorni. Controlla il campo expiresAt nella risposta del job. Dopo la scadenza, il file viene eliminato automaticamente — dovrai avviare un nuovo export.
Importare/Esportare dalla Console
Puoi gestire importazioni ed esportazioni direttamente dalla Console Admin senza usare l’API.
Per importare:
- Vai su Utenti → Importa Utenti.
- Trascina un file CSV o JSON nell’area di upload (o clicca per navigare).
- Una finestra di anteprima mostra le prime 10 righe analizzate — verifica che le colonne siano correttamente mappate.
- Clicca “Avvia Importazione”. Appare una barra di avanzamento che si aggiorna in tempo reale.
- Dopo il completamento, un riepilogo mostra le righe riuscite/fallite con i dettagli degli errori.
Per esportare:
- Vai su Utenti → Esporta Utenti.
- Clicca “Genera Export”. Il job viene accodato.
- Una volta completato, appare il pulsante “Scarica CSV”. Il file rimane disponibile per 7 giorni.
Permessi Richiesti
Tutte le operazioni di importazione ed esportazione richiedono il permesso manage:users.
Pagine Correlate
- Gestione degli Utenti — Operazioni CRUD singolo utente tramite API
- SCIM 2.0 Provisioning — Provisioning automatico continuo tramite IdP
- Console: Importazione/Esportazione Utenti — Guida completa alla Console