write:authentication besitzt (oder read:authentication, um Importe aufzulisten). Sie verwenden niemals ein Endbenutzer-Token oder einen Verifizierungs-API-Schlüssel. In den Beispielen lautet MANAGEMENT_BASE:
Zwei Importwege
Datei importieren
1. Hochladen
Jeder Schalter
keep_* ist true, sofern Sie nicht false senden. Der Aufruf gibt 202 mit einem Auftrag zurück. Eine Anwendung speichert gleichzeitig höchstens 5 hochgeladene Dateien.
2. Probelauf prüfen
Jeder Upload startet einen Probelauf. Dieser prüft jede Person und schreibt nichts. Fragen SieGET import-jobs/{id}/ ab:
Ein fehlgeschlagener Probelauf listet seine Fehler auf. Korrigieren Sie die Datei und laden Sie sie erneut hoch.
3. Import starten
POST import-jobs/{id}/start/ importiert, was der Probelauf geprüft hat, und gibt 202 zurück.
- Personen werden in Batches von 1.000 importiert. Jeder Batch wird einzeln übernommen.
- Pro Anwendung läuft jeweils nur ein Import (sonst
import_running). - Ein unterbrochener Import wird nach seinem letzten übernommenen Batch fortgesetzt.
- Bereits importierte Personen werden übersprungen, sodass Sie dieselbe Datei erneut ausführen können.
- Die Person, die den Import gestartet hat, erhält eine E-Mail, wenn der Import endet oder abbricht.
Importe in Batches
Senden Sie bis zu 1.000 Personen pro Anfrage mit einemidempotency_key von höchstens 100 Zeichen.
- Ein Probelauf gibt
200mit dem Ergebnis zurück und schreibt nichts. - Bei
dry_run: falsegibt ein erfolgreicher Import201zurück. Ein Batch mit einem Fehler gibt400zurück und importiert niemanden. - Eine Wiederholung einer übernommenen Anfrage mit demselben Schlüssel gibt das gespeicherte Ergebnis zurück. Derselbe Schlüssel mit anderem Inhalt gibt
400 {"idempotency_key": "different_payload"}zurück. - Firebase-Parameter gehören in ein
firebase-Objekt:{signer_key, salt_separator, rounds, mem_cost}. GET imports/listet übernommene Batches auf.
Dateiformat
JSON
Ein Array mit Personen oder ein Objekt, dessenusers das Array enthält.
CSV
Dieselben Spalten mit einzelnen Werten, dazugoogle_id, apple_id, github_id, microsoft_id, microsoft_tenant_id, organization_slug, organization_name und organization_role. Eine Person in mehreren Organisationen bekommt eine Zeile pro Organisation.
Duplikate und bestehende Konten
- Zeilen mit derselben E-Mail-Adresse ergeben eine Person. Eine identische Zeile zählt als Duplikat. Eine Zeile mit mehr Verknüpfungen, Organisationen oder einer Authenticator-App wird zusammengeführt.
- Zwei verschiedene Passwort-Hashes, Authenticator-Geheimnisse oder Organisationsrollen für dieselbe Person sind Fehler. Ebenso ist es ein Fehler, wenn zwei Personen dieselbe
external_idoder denselben Provider-Subject beanspruchen. - Existiert bereits ein Konto mit dieser E-Mail-Adresse und hat ein früherer Import es erstellt, wird die Person übersprungen (
already_imported). Hat sich die Person selbst registriert, ist es einidentity_conflict-Fehler. Ein Import ändert niemals ein bestehendes Konto.
Passwörter
Firebase-Parameter werden verschlüsselt und nur für diese Anwendung gespeichert. Jedes andere Format oder ein Kostenfaktor über diesen Grenzwerten bedeutet, dass die Person ein neues Passwort benötigt. Nach der ersten erfolgreichen Anmeldung einer Person speichert Didit ihr Passwort erneut in dem eigenen Format.
Personen ohne verwendbares Passwort
Wenn für eine Person kein Hash oder ein nicht unterstützter Hash vorliegt, erhält ein Anmeldeversuch mit Passwort die übliche Antwort für ein falsches Passwort. Didit sendet dieser Person außerdem einen Link per E-Mail, um ein neues Passwort festzulegen (30 Minuten gültig, höchstens einmal täglich). Das geschieht nur, wenn ihre E-Mail-Adresse verifiziert ist, das Konto nicht gesperrt ist und die Anmeldung mit Passwort aktiviert ist. Im Ergebnis zähltreset_required die Personen ohne verwendbares Passwort. reset_emails zählt davon diejenigen mit einer verifizierten E-Mail-Adresse, denn nur sie können auf diesem Weg erreicht werden. Personen mit einer nicht verifizierten E-Mail-Adresse können sich nicht mit einem Passwort anmelden. Sie können sich weiterhin mit einem E-Mail-Code anmelden, sofern Sie diese Methode aktivieren.
Social-Links, Authenticator-Apps und Organisationen
- Social-Links werden für Anbieter beibehalten, die Ihre Anwendung bereits konfiguriert hat, unter der aktuellen Client-ID Ihrer Anwendung. Bei einer erneuten Anmeldung ist dann kein Nachweis per E-Mail erforderlich. Google- und GitHub-Subjects sind global. Apple-Subjects sind pro Entwicklerteam und Microsoft-Subjects sind pro App-Registrierung gültig, daher passen diese Links nur, wenn Ihre alte Plattform dasselbe Team oder dieselbe Registrierung verwendet hat. Links zu Anbietern, die Sie nicht konfiguriert haben, werden als
social_unavailablegezählt und nicht importiert. - Die TOTP-Secrets der Authenticator-Apps (SHA-1, 6 Stellen, 30 Sekunden) werden verschlüsselt gespeichert. Importierte Personen müssen sie als zweiten Faktor verwenden. Sie erhalten keine Wiederherstellungscodes.
- Organisationen, die noch nicht existieren, werden anhand ihres Slugs angelegt.
- Passkeys können nicht importiert werden. Sie gehören zu Ihrer alten Anmelde-Domain, daher fügen Personen nach der Anmeldung bei Didit einen neuen Passkey hinzu.
Ergebnisse
Jeder Probelauf, jeder Batch und jeder Job liefert dasselberesult:
Antworten enthalten niemals Passwort-Hashes, Salts, Authenticator-Secrets oder Feldwerte.
Vor der Umstellung
Testen Sie in Ihrer Sandbox-Anwendung:- die Anmeldung mit jedem importierten Passwortformat,
- die E-Mail zum Festlegen eines neuen Passworts für eine Person ohne verwendbaren Hash,
- Social-Anmeldung und Authenticator-Codes für importierte Personen,
- die zweimalige Ausführung derselben Datei.
vendor_data jeder Person mit dem Wert übereinstimmt, den Sie für deren Verifizierungen und Transaktionen verwenden.