Carregar muitos utilizadores
Provisioning dos seus utilizadores num ambiente como utilizadores internos, com ou sem palavra-passe:
- Pode carregar os utilizadores com a respetiva palavra-passe, se conhecer as palavras-passe dos utilizadores.
- Caso contrário, pode carregar os utilizadores sem palavra-passe e será então pedido aos utilizadores que definam uma palavra-passe com um código de confirmação por email ou SMS. Exija que os utilizadores tenham email ou número de telefone.
Os utilizadores são carregados em massa para um ambiente com até 1.000 utilizadores por pedido quando os utilizadores são criados sem palavras-passe, e até 100 utilizadores por pedido quando as palavras-passe são incluídas. Isto suporta múltiplos carregamentos, permitindo importar milhões de utilizadores. Pode usar diretamente a FoxIDs Control API ou usar a seed tool.
Exemplo de tempo de carregamento para 50.000 utilizadores
| 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 |
Os tempos são aproximados e dependem da máquina cliente, da rede e da infraestrutura.
Carregar utilizadores com palavras-passe demora mais porque tem de ser calculado um hash da palavra-passe para cada utilizador, e esta operação é intencionalmente demorada por motivos de segurança.
O tempo de carregamento pode ser melhorado calculando os hashes das palavras-passe no cliente antes de carregar os utilizadores.
Carregar com a seed tool
A seed tool lê utilizadores a partir de um ficheiro CSV e carrega os utilizadores para o ambiente configurado. A seed tool também suporta eliminação em massa de utilizadores.
Por predefinição, a seed tool pré-calcula hashes da palavra-passe no cliente durante o carregamento para reduzir o tempo de processamento no servidor.
Ficheiro CSV
Os elementos do ficheiro CSV são separados com ; e o texto pode opcionalmente estar entre aspas.
Pode encontrar ficheiros CSV de exemplo aqui.
(Por exemplo, veja caracteres UTF-8 em claims no ficheiro password-claims-3-test-users.csv, que demonstra suporte multi-língua / de caracteres alargados.)
A primeira linha do ficheiro CSV contém os headers, que são case sensitive. Pode optar por usar todos os headers ou um subconjunto dos headers e alterar a ordem dos headers.
Os headers:
- Phone
- Username
- ConfirmAccount
- EmailVerified
- PhoneVerified
- Password
- PasswordHashAlgorithm
- PasswordHash
- PasswordHashSalt
- ChangePassword
- PasswordLastChanged
- SetPasswordEmail
- SetPasswordSms
- DisableAccount
- Claims
- RequireMultiFactor
O número de headers e de elementos em cada linha tem de corresponder.
Este exemplo de ficheiro CSV usa os headers Email e SetPasswordEmail para carregar utilizadores sem palavras-passe. É pedido ao utilizador que defina uma palavra-passe com confirmação por email no primeiro login.
O email é depois marcado como verificado.
Email;SetPasswordEmail
u1@somedomain.test;true
u2@somedomain.test;true
u3@somedomain.test;true
Este exemplo de ficheiro CSV inclui um username e define o email e o número de telefone como verificados. As palavras-passe são definidas com um código de confirmação por email ou 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
Este exemplo de ficheiro CSV usa todos os headers e carrega utilizadores com palavras-passe e claims. O último utilizador é carregado como utilizador desativado.
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 pré-calcular hashes de palavra-passe no cliente, use as colunas PasswordHashAlgorithm, PasswordHash e PasswordHashSalt e deixe Password vazio (ou remova-o). Opcionalmente, pode preservar o timestamp original de alteração de palavra-passe com PasswordLastChanged (segundos Unix). Quando uma palavra-passe ou hash é fornecido sem PasswordLastChanged, o carregamento aplica o timestamp atual.
Deve adicionar palavras-passe e claims com a notação ;"";. Se uma palavra-passe contiver o símbolo ", este é escaped, por exemplo a palavra-passe My"Password, que se torna ;"My""Password";
Os claims são adicionados com uma estrutura JSON sem quebras de linha e os símbolos " são escaped.
[
{ "Claim": "role", "Values": ["admin", "user"] },
{ "Claim": "customer_id", "Values": ["1234"] }
]
Transferir e configurar a seed tool
Primeiro transfira o ficheiro FoxIDs.SeedTool-x.x.x-win-x64.zip para Windows ou FoxIDs.SeedTool-x.x.x-linux-x64.zip para Linux a partir da release do FoxIDs e extraia a seed tool.
A seed tool é configurada no ficheiro appsettings.json.
O acesso para carregar utilizadores é concedido no seu ambiente master.
Crie um cliente OAuth 2.0 da seed tool no FoxIDs Control Client:
Isto vai conceder à seed tool acesso total ao seu tenant; para privilégios mínimos veja API access rights.
- Inicie sessão no seu tenant (em self-hosted, o tenant principal)
- Selecione o ambiente master (no seletor de ambiente no topo ao centro)
- Selecione o separador Applications
- Clique em New Application
- Clique em Backend Application
- Selecione Show advanced
- Adicione um Name, por exemplo
Seed tool - Altere o Client ID para
foxids_seed - Clique em Register
- Guarde a Authority.
- Guarde o Client secret.
- Clique em Close
- Clique na aplicação na lista para a abrir
- Na secção Resource and scopes
- Remova o visto de Default resource 'foxids_seed' for the application itself
- Clique em Add Resource and scope e adicione o recurso
foxids_control_api - Em seguida, clique em Add Scope e adicione o scope
foxids:tenant
- Selecione Show advanced
- Na secção Issue claims
- Clique em Add Claim e adicione o claim
role - Em seguida, clique em Add Value e adicione o valor de claim
foxids:tenant
- Clique em Add Claim e adicione o claim
- Clique em Update

Adicione ao ficheiro de configuração da seed tool o seu endpoint FoxIDs Control API, tenant e environment, bem como a Authority, o Client secret e o caminho do ficheiro 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"
}
Executar a seed tool e carregar os utilizadores
- Inicie um Command Prompt
- Execute a seed tool com
SeedTool.exe - Clique em
Upara começar a carregar utilizadores
O carregamento pode demorar algum tempo dependendo do número de utilizadores.