Ladda upp många användare

Använd FoxIDs Seed Tool för att läsa in användare från en CSV-fil i en FoxIDs miljö som interna användare. Varje användare kan laddas upp med:

  • Inget lösenord, för lösenordsfri inloggning med en engångskod via e-post eller SMS.
  • Inget lösenord och ett krav på att välja ett vid första inloggningen, bekräftat via e-post eller SMS.
  • Ett känt lösenord i klartext som Seed Tool som standard hashar före uppladdningen.
  • En förberäknad lösenordshash i FoxIDs format och dess separata salt.
  • En Auth0 bcrypt lösenordshash som låter användaren behålla sitt befintliga lösenord.

Control API accepterar upp till 1 000 användare per anrop, varav högst 100 kan innehålla lösenord i klartext. Förberäknade hashvärden räknas in i gränsen på 1 000 användare. Seed Tool använder batcher med upp till 1 000 användare med sin standardhashning på klientsidan. Större filer laddas upp i flera batcher. Du kan också använda Control API:s användaroperationer direkt.

Exempel uppladdningstid för 50 000 användare

Scenario Användare Batch storlek Ca. total tid
Utan lösenord 50 000 1 000 ~2 minuter
Med lösenord 50 000 100 ~2 timmar
Lösenordshashar förberäknade på klient 50 000 1 000 ~5 minuter

Tiderna är ungefärliga och beror på klientmaskin, nätverk och infrastruktur.

Uppladdning av användare med lösenord tar längre tid eftersom en password hash måste beräknas för varje användare, och denna operation är avsiktligt tidskrävande av säkerhetsskäl. Uppladdningstiden kan förbättras genom att beräkna password hashes på klienten innan användarna laddas upp.

Ladda upp med seed tool

Seed Tool i tools/FoxIDs.SeedTool läser en CSV-fil och massuppladdar dess användare till den konfigurerade FoxIDs miljön via Control API. Ange sökvägen i SeedSettings.UsersSvcPath och välj U för att ladda upp. Verktyget stöder även massradering av användare.

Som standard förberäknar Seed Tool lösenordshashar för lösenord i klartext före uppladdningen. Angivna FoxIDs eller bcrypt hashvärden laddas upp oförändrade när Password är tomt eller utelämnat.

CSV fil

Spara CSV-filen som UTF-8 med fält avgränsade av ;. Text kan valfritt omges av citattecken. Parsern delar vid semikolon, så fält kan inte innehålla semikolon eller radbrytningar, inte heller inom citattecken.

Du kan hitta exempel CSV filer här. (Till exempel, se UTF-8 tecken i claims i filen password-claims-3-test-users.csv som visar stöd för multi language / extended character.)

Första raden i CSV filen är case sensitive headers. Du kan välja att använda alla headers eller en delmängd av headers och ändra ordningen på headers. Headers:

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

Antalet headers och element i varje rad måste matcha.

Detta exempel laddar upp en lösenordsfri användare. Utelämna Password och alla kolumner för lösenordshashar och låt SetPasswordEmail och SetPasswordSms vara false. Aktivera lösenordsfri inloggning med motsvarande e-post- eller SMS-leverantör. Bevara varje användares kända verifieringsstatus.

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

Detta CSV-exempel använder kolumnrubrikerna Email och SetPasswordEmail för att ladda upp användare som måste välja ett lösenord med e-postbekräftelse vid första inloggningen. E-post markeras därefter som verifierad.

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

Detta CSV-exempel innehåller ett användarnamn och markerar den angivna e-postadressen och telefonnumret som verifierade. Lösenorden anges med en bekräftelsekod via e-post eller SMS.

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

Detta CSV-exempel laddar upp användare med lösenord i klartext och claims. Den sista användaren laddas upp som inaktiverad.

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

Om du anger förberäknade lösenordshashar använder du kolumnerna PasswordHashAlgorithm och PasswordHash och lämnar Password tomt (eller tar bort det). Ta med PasswordHashSalt för P2HS512:10; utelämna det för bcrypt, vars fullständiga hashsträng innehåller saltet. Se lösenordsformat som stöds vid import. Du kan valfritt bevara den ursprungliga tidpunkten för lösenordsändring med PasswordLastChanged (Unix-sekunder). När ett lösenord eller en hash anges utan PasswordLastChanged registrerar uppladdningen den aktuella tidpunkten.

Du bör lägga till lösenord och claims med ;""; notationen. Om ett lösenord innehåller " symbolen blir det escaped, till exempel lösenordet My"Password som blir ;"My""Password";

Claims läggs till med en JSON struktur utan radbrytningar och " symbolerna escapes.

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

Importera Auth0 bcrypt lösenordshashar

Konvertera de granskade användardata från Auth0 och matchande lösenordshashar till Seed Tools CSV-format. Placera varje fullständigt Auth0 passwordHash-värde i PasswordHash och ange bcrypt i PasswordHashAlgorithm. Utelämna Password och PasswordHashSalt; bcrypt innehåller saltet i hashsträngen.

Detta syntetiska testkonto använder exempelvis Auth0:s 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

Källkodsarkivet innehåller tools/FoxIDs.SeedTool/user_upload_csv_files/auth0-bcrypt-3-test-users.csv med syntetiska hashvärden med kostnad 10 och 12, hashfält med och utan citattecken samt ett inaktiverat konto. Testhasharna använder lösenordet QAZ!234wsx. Ersätt exempeldata med dina granskade användare och deras egna hashvärden före migreringen.

Ange den konverterade CSV-filen i UsersSvcPath och kör sedan Seed Tool och välj U. Låt flaggorna för lösenordsinställning och lösenordsbyte vara false när användarna ska behålla sina befintliga lösenord och aktivera lösenordsinloggning på autentiseringsmetoden Login. Du kan prova importen i en testmiljö och logga in med en importerad användares ursprungliga lösenord.

Se Migrera från Auth0 till FoxIDs för export, matchning av lösenordshashar med användare, hashformat som stöds och kontomappning.

Ladda ner och konfigurera seed tool

Ladda först ner FoxIDs.SeedTool-x.x.x-win-x64.zip för Windows eller FoxIDs.SeedTool-x.x.x-linux-x64.zip för Linux från FoxIDs release och packa upp seed tool.

Seed tool konfigureras i appsettings.json filen.

Åtkomst att ladda upp användare ges i din master miljö.

Skapa en seed tool OAuth 2.0 klient i FoxIDs Control Client:

Detta ger seed tool full åtkomst till din tenant, för least privileges se Control API-åtkomsträttigheter.

  1. Logga in på din tenant (i self hosted huvud tenant)
  2. Välj master miljön (i den övre mitten miljöväljaren)
  3. Välj fliken Applications
  4. Klicka New Application
  5. Klicka Backend Application
    1. Välj Show advanced
    2. Lägg till ett Name t.ex. Seed tool
    3. Ändra Client ID till foxids_seed
    4. Klicka Register
    5. Kom ihåg Authority.
    6. Kom ihåg Client secret.
    7. Klicka Close
  6. Klicka på applikationen i listan för att öppna den
  7. I sektionen Resource and scopes
    1. Ta bort bocken från Default resource 'foxids_seed' for the application itself
    2. Klicka Add Resource and scope och lägg till resursen foxids_control_api
    3. Klicka sedan Add Scope och lägg till scopet foxids:tenant
  8. Välj Show advanced
  9. I sektionen Issue claims
    1. Klicka Add Claim och lägg till claim role
    2. Klicka sedan Add Value och lägg till claim värdet foxids:tenant
  10. Klicka Update

FoxIDs Control Client - master seed tool client

Lägg till ditt FoxIDs Control API endpoint och tenant och environment samt seed tool Authority och Client secret och CSV fil sökväg i seed tool konfigurationen.

"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"
}

Kör seed tool och ladda upp användarna

  1. Starta en Command Prompt
  2. Kör seed tool med SeedTool.exe
  3. Klicka U för att starta uppladdning av användare

Uppladdningen kan ta en stund beroende på antalet användare.

Seed Tool rapporterar antalet lyckade och misslyckade operationer och de importerade användarna finns tillgängliga i FoxIDs Control. Du kan prova en uppladdning med en liten CSV-fil i en testmiljö och granska de resulterande användarna där. Massuppladdning kan ersätta befintliga användare och deras autentiseringsuppgifter; kontrollera identifierarkollisioner före uppladdningen och stäm av en delvis genomförd uppladdning innan du försöker igen.