Skip to Content

Benutzer Import & Export

Auris bietet ein Massen-Import- und -Export-System für Benutzerdaten. Import ist nützlich für die Migration von einem bestehenden Identity Provider, das Onboarding einer Gruppe von Mitarbeitern aus einem HR-System oder das Seeden von Benutzern in einem neuen Tenant. Export ist nützlich für die Erstellung von Backups, das Audit deiner Benutzerbasis oder die Migration zu einem anderen System.

Beide Operationen sind asynchron. Auris verarbeitet die Datei im Hintergrund und stellt einen Job-Status-Endpunkt bereit, so dass du auf den Abschluss warten oder einen Fortschrittsindikator anzeigen kannst.


Import-Formate

Auris akzeptiert zwei Dateiformate für den Benutzer-Import.

CSV-Format

Die erste Zeile muss eine Kopfzeile sein. Die Reihenfolge der Spalten spielt keine Rolle, aber die Spaltennamen müssen exakt übereinstimmen.

email,username,firstName,lastName,password,roles [email protected],alice,Alice,Rossi,TempPass123!,member [email protected],bob,Bob,Marley,,member|billing-admin [email protected],,Carol,White,,,

Spaltenreferenz:

SpaltePflichtHinweise
emailJaMuss innerhalb des Tenants eindeutig sein
usernameNeinStandardmäßig der lokale Teil der E-Mail-Adresse, wenn weggelassen
firstNameNein
lastNameNein
passwordNeinWenn weggelassen, wird der Benutzer ohne Anmeldedaten erstellt und muss per E-Mail zurücksetzen
rolesNeinPipe-getrennte Liste von Rollennamen: member|admin

JSON-Format

Die Datei muss ein JSON-Array von Benutzerobjekten enthalten. Felder stimmen mit den CSV-Spaltennamen überein.

[ { "email": "[email protected]", "username": "alice", "firstName": "Alice", "lastName": "Rossi", "password": "TempPass123!", "roles": ["member"] }, { "email": "[email protected]", "roles": ["member", "billing-admin"] } ]

In Importdateien angegebene Passwörter werden über HTTPS übertragen und serverseitig vor der Speicherung gehasht. Das Klartext-Passwort wird nie gespeichert. Für Produktions-Importe echter Benutzerdaten ist es vorzuziehen, Passwörter wegzulassen und stattdessen einen Passwort-Reset-Flow zu erzwingen.


Import-Prozess

Datei hochladen

Datei über die Drag-and-Drop-Schnittstelle der Console (Einstellungen → Import/Export) oder über die API einreichen:

POST/api/users/importRequires: manage:users

Akzeptiert eine multipart/form-data-Anfrage mit einem file-Feld, das eine CSV- oder JSON-Datei enthält. Gibt den erstellten Import-Job zurück.

curl -X POST https://auth.yourdomain.com/api/users/import \ -H "Authorization: Bearer $TOKEN" \ -H "x-tenant: your-tenant" \ -F "[email protected]"

Antwort:

{ "ok": true, "data": { "id": "import_01HX...", "fileName": "benutzer.csv", "format": "CSV", "status": "PENDING", "totalRows": 0, "processedRows": 0, "successCount": 0, "errorCount": 0, "createdAt": "2025-06-10T14:00:00Z" } }

Job-Fortschritt verfolgen

Job-Detail-Endpunkt abfragen, bis status nicht mehr PENDING oder PROCESSING ist.

GET/api/users/import/[id]Requires: manage:users

Gibt den aktuellen Status eines Import-Jobs zurück, einschließlich Zeilenanzahl und Fehlern pro Zeile.

Job-Status:

StatusBedeutung
PENDINGJob ist in der Warteschlange und hat noch nicht mit der Verarbeitung begonnen
PROCESSINGAuris liest und erstellt aktiv Benutzer
COMPLETEDAlle Zeilen erfolgreich verarbeitet
PARTIALVerarbeitung abgeschlossen, aber einige Zeilen fehlgeschlagen — siehe errors
FAILEDDer gesamte Job fehlgeschlagen (z.B. ungültiges Dateiformat, nicht lesbare Daten)

Ergebnisse überprüfen

Eine abgeschlossene oder teilweise Job-Antwort enthält Fehlerdetails:

{ "ok": true, "data": { "id": "import_01HX...", "status": "PARTIAL", "totalRows": 150, "processedRows": 150, "successCount": 147, "errorCount": 3, "errors": [ { "row": 12, "email": "[email protected]", "reason": "E-Mail-Adresse existiert bereits in diesem Tenant" }, { "row": 67, "reason": "Pflichtfeld fehlt: email" }, { "row": 103, "email": "ungueltige-email", "reason": "Ungültiges E-Mail-Adressformat" } ] } }

Import-Verhalten

Wie Auris Grenzfälle beim Import behandelt:

Doppelte E-Mails: Wenn ein Benutzer mit derselben E-Mail bereits im Tenant existiert, wird die Zeile übersprungen und als Fehler gezählt. Der bestehende Benutzerdatensatz wird nicht geändert.

Fehlende Passwörter: Benutzer, die ohne Passwort erstellt werden, werden in einem deaktivierten-Anmeldedaten-Zustand provisioniert. Sie müssen den “Passwort vergessen”-Flow verwenden oder eine von einem Admin ausgelöste Passwort-Reset-E-Mail erhalten, um Zugang zu erhalten.

Rollenzuweisung: In der Importdatei aufgeführte Rollen werden nach der Benutzererstellung zugewiesen. Wenn ein Rollenname im Tenant nicht existiert, wird die Zeile als partieller Fehler markiert — der Benutzer wird erstellt, aber die Rollenzuweisung schlägt fehl.

Keycloak-Synchronisation: Jeder erfolgreich importierte Benutzer wird sowohl in der Auris-Datenbank als auch im zugrundeliegenden Keycloak-Realm erstellt. Die beiden Datensätze sind über keycloakId verknüpft.

Transaktionsmodell: Auris verarbeitet Zeilen einzeln statt in einer einzigen Transaktion. Ein Fehlschlag in Zeile 50 macht die Zeilen 1–49 nicht rückgängig.


Import-Jobs auflisten

GET/api/users/importRequires: manage:users

Gibt eine paginierte Liste aller Import-Jobs für den Tenant zurück, sortiert nach Erstellungsdatum absteigend.


Benutzer exportieren

Benutzer-Export generiert eine Datei mit allen aktiven (nicht gelöschten) Benutzern im Tenant. Die Operation ist asynchron: Du löst den Export aus und lädst die Datei herunter, wenn die Generierung abgeschlossen ist.

Export auslösen

POST/api/users/exportRequires: manage:users

Startet einen Export-Job. Akzeptiert format im Request-Body: "CSV" oder "JSON". Gibt den Export-Job-Datensatz zurück.

{ "format": "JSON" }

Antwort:

{ "ok": true, "data": { "id": "export_01HX...", "format": "JSON", "status": "PENDING", "totalUsers": 0, "expiresAt": "2025-06-17T14:00:00Z", "createdAt": "2025-06-10T14:00:00Z" } }

Auf Abschluss warten

GET/api/users/exportRequires: manage:users

Gibt eine Liste aller Export-Jobs zurück, einschließlich Status und Ablaufzeit.

Datei herunterladen

GET/api/users/export/[id]/downloadRequires: manage:users

Gibt die Export-Datei als binäre Antwort zurück. Accept: text/csv oder Accept: application/json setzen, um den Antwort-Content-Type zu steuern, oder auf das konfigurierte Format des Jobs vertrauen.

curl https://auth.yourdomain.com/api/users/export/export_01HX.../download \ -H "Authorization: Bearer $TOKEN" \ -H "x-tenant: your-tenant" \ -o benutzer-export.json

Export-Dateien werden temporär gespeichert und laufen nach einer konfigurierten Dauer ab (Standard: 7 Tage). Lade die Datei vor dem expiresAt-Zeitstempel herunter. Nach dem Ablauf musst du einen neuen Export auslösen.

Exportierte Felder

Der Export enthält:

FeldHinweise
idAuris-Benutzer-ID
email
username
firstName
lastName
enabledtrue / false
rolesArray von Rollennamen
createdAtISO 8601-Zeitstempel
lastLoginISO 8601-Zeitstempel oder null, wenn der Benutzer sich noch nie angemeldet hat
metadataVollständiges Metadaten-Objekt

Passwort-Hashes sind nie in Exporten enthalten. Wenn du zu einem anderen IdP migrierst, müssen Benutzer ihre Passwörter nach der Migration zurücksetzen.


Console-Anleitung

Die Console-Import/Export-Schnittstelle ist unter Einstellungen → Import/Export verfügbar.

Importieren:

  1. Eine .csv- oder .json-Datei in die Upload-Zone ziehen und ablegen oder klicken, um die Dateiauswahl zu öffnen.
  2. Die Console zeigt eine Vorschau der ersten 10 Zeilen zur Validierung vor dem Einreichen an.
  3. Nach dem Einreichen verfolgt ein Fortschrittsbalken die Verarbeitung. Der Balken wird alle paar Sekunden durch Abfragen aktualisiert.
  4. Wenn der Job abgeschlossen ist, zeigt eine Ergebniszusammenfassung die Erfolgsanzahl, Fehleranzahl und einen Link zum Fehlerdetails-Dialog.

Exportieren:

  1. Exportformat auswählen (CSV oder JSON).
  2. Auf “Benutzer exportieren” klicken. Die Console zeigt den Job-Status.
  3. Wenn der Export abgeschlossen ist, erscheint eine “Herunterladen”-Schaltfläche. Darauf klicken, um die Datei zu speichern.
  4. Frühere Exporte werden mit ihrem Status, Erstellungsdatum und Ablaufdatum aufgeführt.

Erforderliche Berechtigungen

OperationBerechtigung
Import-Jobs auflistenmanage:users
Import-Datei hochladenmanage:users
Import-Job-Details abrufenmanage:users
Export auslösenmanage:users
Export-Datei herunterladenmanage:users

Verwandte Seiten