Viele Benutzer hochladen

Verwenden Sie das FoxIDs Seed Tool, um Benutzer aus einer CSV-Datei als interne Benutzer in eine FoxIDs Umgebung zu laden. Jeder Benutzer kann wie folgt hochgeladen werden:

  • Ohne Passwort für passwortlose Anmeldung mit einem Einmalcode per E-Mail oder SMS.
  • Ohne Passwort mit der Anforderung, bei der ersten Anmeldung eines zu wählen, bestätigt per E-Mail oder SMS.
  • Mit einem bekannten Klartextpasswort, das das Seed Tool standardmäßig vor dem Upload hasht.
  • Mit einem vorberechneten FoxIDs Passwort-Hash und separatem Salt.
  • Mit einem Auth0 bcrypt Passwort-Hash, sodass der Benutzer sein bestehendes Passwort behalten kann.

Die Control API akzeptiert bis zu 1.000 Benutzer pro Anfrage, von denen höchstens 100 Klartextpasswörter enthalten dürfen. Vorberechnete Hashes zählen zur Grenze von 1.000 Benutzern. Das Seed Tool verwendet mit standardmäßigem clientseitigem Hashing Stapel von bis zu 1.000 Benutzern. Größere Dateien werden in mehreren Stapeln hochgeladen. Sie können auch die Benutzeroperationen der Control API direkt verwenden.

Beispiel Upload Zeit für 50.000 Benutzer

Szenario Benutzer Batch Größe Ca. Gesamtzeit
Ohne Passwörter 50.000 1.000 ~2 Minuten
Mit Passwörtern 50.000 100 ~2 Stunden
Passwort Hashes vorab auf Client berechnet 50.000 1.000 ~5 Minuten

Zeiten sind ungefähr und hängen von Client Maschine, Netzwerk und Infrastruktur ab.

Das Hochladen von Benutzern mit Passwörtern dauert länger, weil für jeden Benutzer ein Password Hash berechnet werden muss, und dieser Vorgang ist aus Sicherheitsgründen absichtlich zeitaufwendig. Die Upload Zeit kann verbessert werden, indem die Passwort Hashes auf dem Client vor dem Upload berechnet werden.

Upload mit Seed Tool

Das Seed Tool in tools/FoxIDs.SeedTool liest eine CSV-Datei und lädt ihre Benutzer über die Control API gesammelt in die konfigurierte FoxIDs Umgebung hoch. Geben Sie den Dateipfad in SeedSettings.UsersSvcPath an und wählen Sie U zum Hochladen. Das Tool unterstützt auch das Massenlöschen von Benutzern.

Standardmäßig berechnet das Seed Tool Passwort-Hashes für Klartextpasswörter vor dem Upload. Übergebene FoxIDs oder bcrypt Hashes werden unverändert hochgeladen, wenn Password leer ist oder fehlt.

CSV Datei

Speichern Sie die CSV-Datei als UTF-8 mit durch ; getrennten Feldern. Text kann optional in Anführungszeichen stehen. Der Parser trennt an Semikolons; Felder dürfen deshalb auch innerhalb von Anführungszeichen keine Semikolons oder Zeilenumbrüche enthalten.

Du kannst Beispiel-CSV-Dateien hier finden. (Zum Beispiel siehe UTF 8 Zeichen in Claims in der Datei password-claims-3-test-users.csv, die Mehrsprachigkeit / erweiterte Zeichenunterstützung demonstriert.)

Die erste Zeile der CSV Datei sind die case sensitive Headers. Du kannst alle Headers oder eine Teilmenge verwenden und die Reihenfolge der Headers ändern. Headers:

  • Email
  • Phone
  • Username
  • ConfirmAccount
  • EmailVerified
  • PhoneVerified
  • Password
  • PasswordHashAlgorithm
  • PasswordHash
  • PasswordHashSalt
  • ChangePassword
  • PasswordLastChanged
  • SetPasswordEmail
  • SetPasswordSms
  • DisableAccount
  • Claims
  • RequireMultiFactor

Die Anzahl der Headers und Elemente in jeder Zeile muss übereinstimmen.

Dieses Beispiel lädt einen passwortlosen Benutzer hoch. Lassen Sie Password und alle Passwort-Hash-Spalten weg und lassen Sie SetPasswordEmail und SetPasswordSms auf false. Aktivieren Sie passwortlose Anmeldung mit dem entsprechenden E-Mail- oder SMS-Anbieter. Bewahren Sie den bekannten Verifizierungszustand jedes Benutzers.

Email;EmailVerified;SetPasswordEmail;SetPasswordSms
passwordless@example.com;true;false;false

Dieses CSV-Beispiel verwendet die Spaltenüberschriften Email und SetPasswordEmail, um Benutzer hochzuladen, die bei ihrer ersten Anmeldung ein Passwort mit E-Mail-Bestätigung wählen müssen. Die E Mail wird danach als verifiziert markiert.

Email;SetPasswordEmail
u1@somedomain.test;true
u2@somedomain.test;true
u3@somedomain.test;true

Dieses CSV-Beispiel enthält einen Benutzernamen und markiert die angegebene E-Mail-Adresse und Telefonnummer als verifiziert. Die Passwörter werden mit einem Bestätigungscode per E-Mail oder SMS gesetzt.

Email;Phone;Username;EmailVerified;PhoneVerified;SetPasswordEmail;SetPasswordSms
u1@somedomain.test;;u1;true;true;true;false
;+4422222222;u2;true;true;false;true
u3@somedomain.test;+4433333333;u3;true;true;true;false

Dieses CSV-Beispiel lädt Benutzer mit Klartextpasswörtern und Claims hoch. Der letzte Benutzer wird als deaktivierter Benutzer hochgeladen.

Email;Phone;Username;ConfirmAccount;EmailVerified;PhoneVerified;Password;ChangePassword;SetPasswordEmail;SetPasswordSms;DisableAccount;Claims;RequireMultiFactor
u1@somedomain.test;+4411111111;u1;false;true;true;"My1Password!";false;false;false;false;"[{""Claim"": ""role"", ""Values"": [""admin""]}]";false
u2@somedomain.test;+4422222222;u2;false;true;true;"My2Password!";true;false;false;false;"[{""Claim"": ""role"", ""Values"": [""admin""]}, {""Claim"": ""customer_id"", ""Values"": [""1234""]}]";true
u3@somedomain.test;+4433333333;u3;false;true;true;"My3Password!";false;false;false;true;"[{""Claim"": ""role"", ""Values"": [""admin"", ""user""]}]";false

Wenn Sie vorberechnete Passwort-Hashes angeben, verwenden Sie die Spalten PasswordHashAlgorithm und PasswordHash und lassen Sie Password leer (oder entfernen Sie es). Geben Sie PasswordHashSalt für P2HS512:10 an; lassen Sie es für bcrypt weg, dessen vollständige Hash-Zeichenfolge das Salt enthält. Siehe unterstützte Passwortimportformate. Optional können Sie den ursprünglichen Passwortänderungszeitpunkt mit PasswordLastChanged (Unix-Sekunden) beibehalten. Wird ein Passwort oder Hash ohne PasswordLastChanged angegeben, erfasst der Upload den aktuellen Zeitpunkt.

Du solltest Passwörter und Claims mit der ;""; Notation hinzufügen. Wenn ein Passwort das " Symbol enthält, wird es escaped, z.B. das Passwort My"Password, das zu ;"My""Password"; wird

Claims werden mit einer JSON Struktur ohne Zeilenumbrüche hinzugefügt und die " Symbole werden escaped.

[
  { "Claim": "role", "Values": ["admin", "user"] },
  { "Claim": "customer_id", "Values": ["1234"] }
]

Auth0 bcrypt Passwort-Hashes importieren

Konvertieren Sie die geprüften Auth0 Benutzerdaten und zugehörigen Passwort-Hashes in das CSV-Format des Seed Tools. Tragen Sie jeden vollständigen Auth0 passwordHash-Wert in PasswordHash ein und setzen Sie PasswordHashAlgorithm auf bcrypt. Lassen Sie Password und PasswordHashSalt weg; bcrypt enthält sein Salt in der Hash-Zeichenfolge.

Dieses synthetische Testkonto verwendet beispielsweise das Auth0 Format $2b$10$:

Email;EmailVerified;PasswordHashAlgorithm;PasswordHash;SetPasswordEmail;SetPasswordSms;ChangePassword;DisableAccount
auth0.alice@example.com;true;bcrypt;$2b$10$..CA.uOD/eaGAOmJB.yMBu3YunYvFEoaS5IJZ/wiqfQ/EWx.HaqjC;false;false;false;false

Das Quellrepository enthält tools/FoxIDs.SeedTool/user_upload_csv_files/auth0-bcrypt-3-test-users.csv mit synthetischen Hashes der Kostenfaktoren 10 und 12, Hash-Feldern mit und ohne Anführungszeichen sowie einem deaktivierten Konto. Diese Test-Hashes verwenden das Passwort QAZ!234wsx. Ersetzen Sie die Beispieldaten vor der Migration durch Ihre geprüften Benutzer und deren eigene Hashes.

Setzen Sie UsersSvcPath auf die konvertierte CSV-Datei, starten Sie anschließend das Seed Tool und wählen Sie U. Lassen Sie Passworteinrichtungs- und Passwortänderungsflags auf false, wenn Benutzer ihre bestehenden Passwörter behalten sollen, und aktivieren Sie die Passwortanmeldung auf der Login-Authentifizierungsmethode. Sie können den Import in einer Testumgebung ausprobieren und sich mit dem ursprünglichen Passwort eines importierten Benutzers anmelden.

Siehe Von Auth0 zu FoxIDs migrieren für Export, Zuordnung von Passwort-Hashes zu Benutzern, unterstützte Hash-Formate und Kontozuordnung.

Seed Tool herunterladen und konfigurieren

Lade zuerst die Datei FoxIDs.SeedTool-x.x.x-win-x64.zip für Windows oder FoxIDs.SeedTool-x.x.x-linux-x64.zip für Linux aus den FoxIDs release herunter und entpacke das Seed Tool.

Das Seed Tool wird in der Datei appsettings.json konfiguriert.

Der Zugriff zum Hochladen von Benutzern wird in deinem master Environment gewährt.

Erstelle einen Seed Tool OAuth 2.0 Client im FoxIDs Control Client:

Damit erhält das Seed Tool vollen Zugriff auf deinen Tenant. Für least privileges siehe Control API-Zugriffsrechte.

  1. Melde dich in deinem Tenant an (bei self hosted im Haupt Tenant)
  2. Wähle das master Environment (im oberen mittleren Environment Selector)
  3. Wähle die Registerkarte Applications
  4. Klicke New Application
  5. Klicke Backend Application
    1. Wähle Show advanced
    2. Füge einen Name hinzu, z.B. Seed tool
    3. Ändere die Client ID auf foxids_seed
    4. Klicke Register
    5. Merke dir die Authority.
    6. Merke dir das Client secret.
    7. Klicke Close
  6. Klicke auf die Anwendung in der Liste, um sie zu öffnen
  7. Im Abschnitt Resource and scopes
    1. Entferne das Häkchen bei Default resource 'foxids_seed' for the application itself
    2. Klicke Add Resource and scope und füge die Resource foxids_control_api hinzu
    3. Klicke dann Add Scope und füge den Scope foxids:tenant hinzu
  8. Wähle Show advanced
  9. Im Abschnitt Issue claims
    1. Klicke Add Claim und füge den Claim role hinzu
    2. Klicke dann Add Value und füge den Claim Wert foxids:tenant hinzu
  10. Klicke Update

FoxIDs Control Client - master seed tool client

Füge deinen FoxIDs Control API Endpoint und tenant und environment sowie die Authority und das Client secret des Seed Tools und den CSV Datei Pfad zur Seed Tool Konfiguration hinzu.

"SeedSettings": {
    "FoxIDsControlEndpoint": "https://control.foxids.com", // self-hosted "https://control.yyyyxxxx.com" or local development https://localhost:44331
    "Tenant": "xxxxxx",
    "Environment": "xxxxxx",
    "Authority": "https://id.foxids.com/zzzzz/master/foxids_seed/", // custom domain, self-hosted or local development "https://https://localhost:44331/zzzzz/master/foxids_seed/"
    "ClientId": "foxids_master_seed",
    "ClientSecret": "xxxxxx",
    "Scope": "foxids_control_api:foxids:tenant",
    "UsersSvcPath": "c:\\... xxx ...\\users.csv"
}

Seed Tool ausführen und Benutzer hochladen

  1. Starte eine Command Prompt
  2. Starte das Seed Tool mit SeedTool.exe
  3. Klicke U, um den Upload der Benutzer zu starten

Der Upload kann je nach Benutzeranzahl eine Weile dauern.

Das Seed Tool meldet die Anzahl erfolgreicher und fehlgeschlagener Vorgänge; die importierten Benutzer sind in FoxIDs Control verfügbar. Sie können einen Upload mit einer kleinen CSV-Datei in einer Testumgebung ausprobieren und die angelegten Benutzer dort prüfen. Ein Massenupload kann bestehende Benutzer und ihre Anmeldedaten ersetzen; prüfen Sie vor dem Upload auf Kennungskollisionen und gleichen Sie einen teilweise erfolgten Upload vor einem erneuten Versuch ab.