Upload mange brugere

Brug FoxIDs Seed Tool til at indlæse brugere fra en CSV-fil i et FoxIDs miljø som interne brugere. Hver bruger kan uploades med:

  • Ingen adgangskode, til login uden adgangskode med en engangskode via e-mail eller SMS.
  • Ingen adgangskode og et krav om at vælge en ved første login, bekræftet via e-mail eller SMS.
  • En kendt adgangskode i klartekst, som Seed Tool som standard hasher før upload.
  • En forudberegnet FoxIDs adgangskodehash og dens separate salt.
  • En Auth0 bcrypt adgangskodehash, så brugeren kan beholde sin eksisterende adgangskode.

Control API accepterer op til 1.000 brugere pr. request, hvoraf højst 100 må indeholde adgangskoder i klartekst. Forudberegnede hashes tæller med i grænsen på 1.000 brugere. Seed Tool bruger batches på op til 1.000 brugere med sin standardindstilling for hashing på klienten. Større filer uploades i flere batches. Du kan også bruge Control API-operationerne til brugere direkte.

Eksempel upload tid for 50.000 brugere

Scenarie Brugere Batch størrelse Ca. samlet tid
Uden adgangskoder 50.000 1.000 ~2 minutter
Med adgangskoder 50.000 100 ~2 timer
Adgangskode hashes forudberegnet på klient 50.000 1.000 ~5 minutter

Tiderne er omtrentlige og afhænger af klientmaskine, netværk og infrastruktur.

Upload af brugere med adgangskoder tager længere tid fordi en password hash skal beregnes for hver bruger, og denne operation er med vilje tidskrævende af sikkerhedshensyn. Upload tid kan forbedres ved at beregne password hashes på klienten før upload af brugerne.

Upload med Seed Tool

Seed Tool i tools/FoxIDs.SeedTool læser en CSV-fil og masseuploader dens brugere til det konfigurerede FoxIDs miljø gennem Control API. Sæt filstien i SeedSettings.UsersSvcPath, og vælg U for at uploade. Værktøjet understøtter også massesletning af brugere.

Som standard forudberegner Seed Tool adgangskodehashes for adgangskoder i klartekst før upload. Angivne FoxIDs eller bcrypt hashes uploades uændret, når Password er tomt eller udeladt.

CSV-fil

Gem CSV-filen som UTF-8 med felter adskilt af ;. Tekst kan eventuelt stå i anførselstegn. Parseren opdeler ved semikolon, så felter kan ikke indeholde semikolon eller linjeskift, heller ikke inde i anførselstegn.

Du kan finde eksempler på CSV-filer her. (Se f.eks. UTF-8-tegn i claims i filen password-claims-3-test-users.csv, som demonstrerer understøttelse af flere sprog og udvidede tegn.)

CSV-filens første linje indeholder kolonneoverskrifter, som skelner mellem store og små bogstaver. Du kan bruge alle overskrifter eller et udvalg og ændre deres rækkefølge. Kolonneoverskrifterne:

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

Antallet af kolonneoverskrifter og felter i hver linje skal stemme overens.

Dette eksempel uploader en bruger uden adgangskode. Udelad Password og alle adgangskodehashkolonner, og lad SetPasswordEmail og SetPasswordSms være false. Aktivér login uden adgangskode med den tilhørende e-mail- eller SMS-udbyder. Bevar hver brugers kendte verificeringsstatus.

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

Dette CSV-eksempel bruger overskrifterne Email og SetPasswordEmail til at uploade brugere, der skal vælge en adgangskode med e-mailbekræftelse ved første login. E-mailadressen markeres derefter som verificeret.

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

Dette CSV-eksempel indeholder et brugernavn og markerer den angivne e-mailadresse og det angivne telefonnummer som verificerede. Adgangskoderne oprettes med en bekræftelseskode via e-mail 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

Dette CSV-eksempel uploader brugere med adgangskoder i klartekst og claims. Den sidste bruger uploades som deaktiveret.

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

Hvis du angiver forudberegnede adgangskodehashes, bruges kolonnerne PasswordHashAlgorithm og PasswordHash, mens Password efterlades tom (eller fjernes). Medtag PasswordHashSalt for P2HS512:10; udelad det for bcrypt, hvor hele hashstrengen indeholder saltet. Se de understøttede formater til import af adgangskoder. Du kan eventuelt bevare det oprindelige tidspunkt for adgangskodeændringen med PasswordLastChanged (Unix-sekunder). Når en adgangskode eller hash angives uden PasswordLastChanged, registrerer uploaden det aktuelle tidspunkt.

Adgangskoder og claims tilføjes med notationen ;"";. Hvis en adgangskode indeholder tegnet ", escapes det, f.eks. adgangskoden My"Password, som bliver til ;"My""Password";

Claims tilføjes som en JSON-struktur uden linjeskift, og tegnene " escapes.

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

Importér Auth0 bcrypt adgangskodehashes

Konvertér de gennemgåede Auth0 brugerdata og de tilhørende adgangskodehashes til Seed Tool CSV-formatet. Indsæt hver komplet Auth0 passwordHash værdi i PasswordHash, og sæt PasswordHashAlgorithm til bcrypt. Udelad Password og PasswordHashSalt; bcrypt indeholder saltet i hashstrengen.

Denne syntetiske testkonto bruger eksempelvis Auth0s $2b$10$ format:

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

Kilderepositoriet indeholder tools/FoxIDs.SeedTool/user_upload_csv_files/auth0-bcrypt-3-test-users.csv med syntetiske hashes med cost 10 og 12, hashfelter med og uden anførselstegn og en deaktiveret konto. Disse testhashes bruger adgangskoden QAZ!234wsx. Erstat eksempeldataene med dine gennemgåede brugere og deres egne hashes før migreringen.

Sæt UsersSvcPath til den konverterede CSV-fil, og kør derefter Seed Tool, og vælg U. Lad flagene for oprettelse og ændring af adgangskode være false, når brugerne skal beholde deres eksisterende adgangskoder, og aktivér login med adgangskode på Login autentificeringsmetoden. Du kan afprøve importen i et testmiljø og logge ind med en importeret brugers oprindelige adgangskode.

Se Migrer fra Auth0 til FoxIDs for eksport, matchning af adgangskodehashes med brugere, understøttede hashformater og kontotilknytning.

Download og konfigurer seed tool

Download først filen FoxIDs.SeedTool-x.x.x-win-x64.zip til Windows eller FoxIDs.SeedTool-x.x.x-linux-x64.zip til Linux fra FoxIDs release og pak seed tool ud.

Seed tool konfigureres i appsettings.json filen.

Adgang til at uploade brugere gives i dit master miljø.

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

Dette giver seed tool fuld adgang til din tenant, for least privileges se Control API-adgangsrettigheder.

  1. Login på din tenant (i self hosted den primære tenant)
  2. Vælg master miljøet (i top midt miljø selector)
  3. Vælg fanen Applications
  4. Klik New Application
  5. Klik Backend Application
    1. Vælg Show advanced
    2. Tilføj et Name f.eks. Seed tool
    3. Ændr Client ID til foxids_seed
    4. Klik Register
    5. Husk Authority.
    6. Husk Client secret.
    7. Klik Close
  6. Klik på applikationen i listen for at åbne den
  7. I sektionen Resource and scopes
    1. Fjern fluebenet fra Default resource 'foxids_seed' for the application itself
    2. Klik Add Resource and scope og tilføj resource foxids_control_api
    3. Klik derefter Add Scope og tilføj scope foxids:tenant
  8. Vælg Show advanced
  9. I sektionen Issue claims
    1. Klik Add Claim og tilføj claim role
    2. Klik derefter Add Value og tilføj claim værdien foxids:tenant
  10. Klik Update

FoxIDs Control Client - master seed tool client

Tilføj din FoxIDs Control API endpoint og tenant og environment samt seed tool Authority og Client secret og CSV fil sti til 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 og upload brugerne

  1. Start en Command Prompt
  2. Kør seed tool med SeedTool.exe
  3. Klik U for at starte upload af brugere

Upload kan tage et stykke tid afhængigt af antallet af brugere.

Seed Tool viser antallet af vellykkede og mislykkede importer, og de importerede brugere er tilgængelige i FoxIDs Control. Du kan prøve en upload med en lille CSV-fil i et testmiljø og gennemgå de oprettede brugere der. Masseupload kan erstatte eksisterende brugere og deres legitimationsoplysninger; kontrollér sammenfald mellem identifikatorer før upload, og afstem en delvis upload, før den forsøges igen.