Caricare molti utenti
Provisioning dei tuoi utenti in un ambiente come utenti interni, con o senza password:
- Puoi caricare gli utenti con la loro password, se conosci le password degli utenti.
- Altrimenti, puoi caricare gli utenti senza password e agli utenti verra poi richiesto di impostare una password con un codice di conferma via email o SMS. Richiedi che gli utenti abbiano un'email oppure un numero di telefono.
Gli utenti vengono caricati in blocco in un ambiente con fino a 1.000 utenti per richiesta quando vengono creati senza password, e fino a 100 utenti per richiesta quando sono incluse le password. Questo supporta caricamenti multipli, consentendo l'importazione di milioni di utenti. Puoi usare direttamente la FoxIDs Control API oppure usare il seed tool.
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
Il seed tool legge gli utenti da un file CSV e carica gli utenti nell'ambiente configurato. Il seed tool supporta anche l'eliminazione massiva degli utenti.
Per impostazione predefinita, il seed tool pre-calcola sul client gli hash della password durante l'upload per ridurre il tempo di elaborazione sul server.
File CSV
Gli elementi del file CSV sono separati con ; e il testo puo facoltativamente essere racchiuso 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 di file CSV usa gli header Email e SetPasswordEmail per caricare utenti senza password. All'utente viene richiesto di impostare una password con conferma email al primo login.
L'email viene poi contrassegnata come verificata.
Email;SetPasswordEmail
u1@somedomain.test;true
u2@somedomain.test;true
u3@somedomain.test;true
Questo esempio di file CSV include uno username e imposta email e numero di telefono come verificati. Le password vengono impostate con un codice di conferma via email 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 di file CSV usa tutti gli header e carica utenti con password e claim. L'ultimo utente viene caricato come utente 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 pre-calcoli gli hash password sul client, usa le colonne PasswordHashAlgorithm, PasswordHash e PasswordHashSalt e lascia Password vuoto (oppure rimuovilo). Facoltativamente puoi preservare il timestamp originale di modifica password con PasswordLastChanged (secondi Unix). Quando viene fornita una password o un hash senza PasswordLastChanged, l'upload applica il timestamp 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"] }
]
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 API access rights.
- 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.