Caricare molti utenti
Usa FoxIDs Seed Tool per caricare utenti da un CSV in un ambiente FoxIDs come utenti interni. Ogni utente può essere caricato con:
- Nessuna password, per l’accesso senza password con codice monouso via e-mail o SMS.
- Nessuna password e l’obbligo di sceglierne una al primo accesso, confermato via e-mail o SMS.
- Una password nota in chiaro, di cui Seed Tool calcola l’hash prima del caricamento per impostazione predefinita.
- Un hash di password FoxIDs precalcolato e il relativo salt separato.
- Un hash di password Auth0 bcrypt, che permette di mantenere la password esistente.
La Control API accetta fino a 1.000 utenti per richiesta, di cui al massimo 100 possono contenere password in chiaro. Gli hash precalcolati rientrano nel limite di 1.000 utenti. Seed Tool usa lotti fino a 1.000 utenti con il calcolo dell’hash lato client predefinito. Per file più grandi carica più lotti. Puoi anche usare direttamente le operazioni utente della Control API.
Esempio di tempo di upload per 50.000 utenti
| Scenario | Users | Batch size | Approx. total time |
|---|---|---|---|
| Without passwords | 50,000 | 1,000 | ~2 minutes |
| With passwords | 50,000 | 100 | ~2 hours |
| Password hashes pre-calculated on client | 50,000 | 1,000 | ~5 minutes |
I tempi sono approssimativi e dipendono dalla macchina client, dalla rete e dall'infrastruttura.
Il caricamento degli utenti con password richiede piu tempo perche per ogni utente deve essere calcolato un hash della password, e questa operazione richiede intenzionalmente tempo per motivi di sicurezza. Il tempo di upload puo essere migliorato calcolando gli hash password sul client prima di caricare gli utenti.
Upload con seed tool
Seed Tool in tools/FoxIDs.SeedTool legge un CSV e carica gli utenti in blocco nell’ambiente FoxIDs configurato tramite Control API. Imposta il percorso in SeedSettings.UsersSvcPath e seleziona U per caricare. Lo strumento supporta anche l’eliminazione in blocco degli utenti.
Per impostazione predefinita, Seed Tool precalcola gli hash delle password per le password in chiaro prima del caricamento. Gli hash FoxIDs o bcrypt forniti vengono caricati senza modifiche quando
Passwordè vuoto o omesso.
File CSV
Salva il CSV in UTF-8, con campi separati da ;. Il testo può essere racchiuso tra virgolette. Il parser divide sui punti e virgola, quindi i campi non possono contenere punti e virgola o interruzioni di riga, neppure tra virgolette.
Puoi trovare file CSV di esempio qui. (Ad esempio, vedi i caratteri UTF-8 nei claim nel file password-claims-3-test-users.csv che dimostra il supporto multi-lingua / per caratteri estesi.)
La prima riga del file CSV contiene gli header case sensitive. Puoi scegliere di usare tutti gli header oppure un sottoinsieme degli header e cambiare l'ordine degli header. Gli header:
- Phone
- Username
- ConfirmAccount
- EmailVerified
- PhoneVerified
- Password
- PasswordHashAlgorithm
- PasswordHash
- PasswordHashSalt
- ChangePassword
- PasswordLastChanged
- SetPasswordEmail
- SetPasswordSms
- DisableAccount
- Claims
- RequireMultiFactor
Il numero di header e di elementi in ogni riga deve corrispondere.
Questo esempio carica un utente senza password. Ometti Password e tutte le colonne di hash e mantieni SetPasswordEmail e SetPasswordSms su false. Abilita l’accesso senza password con il provider e-mail o SMS corrispondente. Preserva lo stato di verifica noto di ogni utente.
Email;EmailVerified;SetPasswordEmail;SetPasswordSms
passwordless@example.com;true;false;false
Questo esempio CSV usa le intestazioni Email e SetPasswordEmail per caricare utenti che devono scegliere una password con conferma via e-mail al primo accesso.
L'email viene poi contrassegnata come verificata.
Email;SetPasswordEmail
u1@somedomain.test;true
u2@somedomain.test;true
u3@somedomain.test;true
Questo esempio CSV include un nome utente e contrassegna l’indirizzo e-mail e il telefono forniti come verificati. Le password vengono impostate con un codice di conferma via e-mail o 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
Questo esempio CSV carica utenti con password in chiaro e claim. L’ultimo utente viene caricato come disabilitato.
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
Se fornisci hash precalcolati, usa le colonne PasswordHashAlgorithm e PasswordHash e lascia Password vuoto (o rimuovilo). Includi PasswordHashSalt per P2HS512:10; omettilo per bcrypt, la cui stringa completa contiene il salt. Consulta i formati di importazione password supportati. Puoi mantenere il timestamp originale della modifica con PasswordLastChanged (secondi Unix). Quando una password o un hash sono forniti senza PasswordLastChanged, il caricamento registra l’ora corrente.
Dovresti aggiungere password e claim con la notazione ;"";. Se una password contiene il simbolo ", viene effettuato l'escape, ad esempio la password My"Password che diventa ;"My""Password";
I claim vengono aggiunti con una struttura JSON senza interruzioni di riga e i simboli " vengono escaped.
[
{ "Claim": "role", "Values": ["admin", "user"] },
{ "Claim": "customer_id", "Values": ["1234"] }
]
Importare hash delle password Auth0 bcrypt
Converti i dati utente Auth0 verificati e gli hash corrispondenti nel formato CSV di Seed Tool. Inserisci ogni valore Auth0 passwordHash completo in PasswordHash e imposta PasswordHashAlgorithm su bcrypt. Ometti Password e PasswordHashSalt; bcrypt include il salt nella stringa dell’hash.
Ad esempio, questo account di test sintetico usa il formato Auth0 $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
Il repository contiene tools/FoxIDs.SeedTool/user_upload_csv_files/auth0-bcrypt-3-test-users.csv con hash sintetici di costo 10 e 12, campi hash con e senza virgolette e un account disabilitato. Gli hash di test usano la password QAZ!234wsx. Sostituisci i dati di esempio con utenti verificati e relativi hash prima della migrazione.
Imposta UsersSvcPath sul CSV convertito, quindi esegui Seed Tool e seleziona U. Mantieni i flag di impostazione e modifica della password su false se gli utenti devono conservare le password esistenti e abilita l’accesso con password nel metodo Login. Puoi provare l’importazione in un ambiente di test e accedere con la password originale di un utente importato.
Consulta Migrare da Auth0 a FoxIDs per esportazione, associazione degli hash agli utenti, formati supportati e associazione degli account.
Scaricare e configurare il seed tool
Per prima cosa scarica il file FoxIDs.SeedTool-x.x.x-win-x64.zip per Windows oppure FoxIDs.SeedTool-x.x.x-linux-x64.zip per Linux dalla release di FoxIDs ed estrai il seed tool.
Il seed tool viene configurato nel file appsettings.json.
L'accesso per caricare utenti viene concesso nel tuo ambiente master.
Crea un client OAuth 2.0 del seed tool nel FoxIDs Control Client:
Questo concedera al seed tool pieno accesso al tuo tenant; per privilegi minimi consulta Diritti di accesso Control API.
- Accedi al tuo tenant (in self-hosted il tenant principale)
- Seleziona l'ambiente master (nel selettore ambiente in alto al centro)
- Seleziona la scheda Applications
- Fai clic su New Application
- Fai clic su Backend Application
- Seleziona Show advanced
- Aggiungi un Name ad esempio
Seed tool - Cambia il Client ID in
foxids_seed - Fai clic su Register
- Ricorda l'Authority.
- Ricorda il Client secret.
- Fai clic su Close
- Fai clic sull'applicazione nell'elenco per aprirla
- Nella sezione Resource and scopes
- Rimuovi il segno di spunta da Default resource 'foxids_seed' for the application itself
- Fai clic su Add Resource and scope e aggiungi la risorsa
foxids_control_api - Poi fai clic su Add Scope e aggiungi lo scope
foxids:tenant
- Seleziona Show advanced
- Nella sezione Issue claims
- Fai clic su Add Claim e aggiungi il claim
role - Poi fai clic su Add Value e aggiungi il valore claim
foxids:tenant
- Fai clic su Add Claim e aggiungi il claim
- Fai clic su Update

Aggiungi al file di configurazione del seed tool il tuo endpoint FoxIDs Control API, tenant ed environment, oltre ad Authority, Client secret e percorso del file CSV.
"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"
}
Eseguire il seed tool e caricare gli utenti
- Avvia un prompt dei comandi
- Esegui il seed tool con
SeedTool.exe - Fai clic su
Uper iniziare a caricare gli utenti
L'upload puo richiedere un po' di tempo a seconda del numero di utenti.
Seed Tool riporta il numero di operazioni riuscite e fallite e gli utenti importati sono disponibili in FoxIDs Control. Puoi provare un caricamento con un piccolo CSV in un ambiente di test ed esaminare gli utenti risultanti. Il caricamento in blocco può sostituire utenti e credenziali esistenti; verifica le collisioni degli identificatori prima di caricare e riconcilia i caricamenti parziali prima di riprovare.