Importer de nombreux utilisateurs
Provisionner vos utilisateurs dans un environnement en tant qu’utilisateurs internes, avec ou sans mot de passe :
- Vous pouvez importer les utilisateurs avec leur mot de passe, si vous connaissez les mots de passe des utilisateurs.
- Sinon, vous pouvez importer les utilisateurs sans mot de passe et les utilisateurs sont alors invités à définir un mot de passe via un code de confirmation email ou SMS. Exigez que les utilisateurs aient un email ou un numéro de téléphone.
Les utilisateurs sont importés en masse dans un environnement avec jusqu’à 1 000 utilisateurs par requête lorsque les utilisateurs sont créés sans mot de passe, et jusqu’à 100 utilisateurs par requête lorsque des mots de passe sont inclus. Cela permet plusieurs imports et l’importation de millions d’utilisateurs. Vous pouvez utiliser directement l’API FoxIDs Control ou utiliser le seed tool.
Exemple de temps d’import pour 50 000 utilisateurs
| Scénario | Utilisateurs | Taille de lot | Temps total approx. |
|---|---|---|---|
| Sans mots de passe | 50 000 | 1 000 | ~2 minutes |
| Avec mots de passe | 50 000 | 100 | ~2 heures |
| Hash de mot de passe pré-calculé côté client | 50 000 | 1 000 | ~5 minutes |
Les temps sont approximatifs et dépendent de la machine cliente, du réseau et de l’infrastructure.
L’import d’utilisateurs avec mots de passe prend plus de temps car un hachage de mot de passe doit être calculé pour chaque utilisateur, et cette opération est volontairement coûteuse pour la sécurité. Le temps d’import peut être amélioré en calculant les hachages de mot de passe côté client avant l’import.
Importer avec le seed tool
Le seed tool lit les utilisateurs depuis un fichier CSV et les importe dans l’environnement configuré. Le seed tool prend également en charge la suppression d’utilisateurs en masse.
Par défaut, le seed tool pré-calcule les hachages de mot de passe côté client pendant l’import afin de réduire le temps de traitement côté serveur.
Fichier CSV
Les éléments du fichier CSV sont séparés par ; et le texte peut être entre guillemets.
Vous pouvez trouver des fichiers CSV d’exemple ici. (Par exemple, voir les caractères UTF-8 dans les claims dans le fichier password-claims-3-test-users.csv démontrant la prise en charge multi-langue / caractères étendus.)
La première ligne du fichier CSV est l’en-tête sensible à la casse. Vous pouvez choisir d’utiliser tous les en-têtes ou un sous-ensemble des en-têtes et changer l’ordre des en-têtes. Les en-têtes :
- Phone
- Username
- ConfirmAccount
- EmailVerified
- PhoneVerified
- Password
- PasswordHashAlgorithm
- PasswordHash
- PasswordHashSalt
- ChangePassword
- PasswordLastChanged
- SetPasswordEmail
- SetPasswordSms
- DisableAccount
- Claims
- RequireMultiFactor
Le nombre d’en-têtes et d’éléments dans chaque ligne doit correspondre.
Cet exemple de fichier CSV utilise les en-têtes Email et SetPasswordEmail pour importer des utilisateurs sans mots de passe. L’utilisateur doit définir un mot de passe avec une confirmation par email lors de la première connexion.
L’email est ensuite marqué comme vérifié.
Email;SetPasswordEmail
u1@somedomain.test;true
u2@somedomain.test;true
u3@somedomain.test;true
Cet exemple de fichier CSV inclut un nom d’utilisateur et marque l’email et le numéro de téléphone comme vérifiés. Les mots de passe sont définis avec un code de confirmation 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
Cet exemple de fichier CSV utilise tous les en-têtes et importe des utilisateurs avec mots de passe et claims. Le dernier utilisateur est importé comme utilisateur désactivé.
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
Si vous pré-calculez les hachages de mot de passe côté client, utilisez les colonnes PasswordHashAlgorithm, PasswordHash et PasswordHashSalt et laissez Password vide (ou supprimez-la). Vous pouvez conserver l’horodatage d’origine du changement de mot de passe avec PasswordLastChanged (secondes Unix). Lorsqu’un mot de passe ou un hachage est fourni sans PasswordLastChanged, l’import estampille l’heure actuelle.
Vous devez ajouter des mots de passe et des claims avec la notation ;"";. Si un mot de passe contient le symbole ", il est échappé, par exemple le mot de passe My"Password devient ;"My""Password";
Les claims sont ajoutés avec une structure JSON sans sauts de ligne et les symboles " sont échappés.
[
{ "Claim": "role", "Values": ["admin", "user"] },
{ "Claim": "customer_id", "Values": ["1234"] }
]
Télécharger et configurer le seed tool
Téléchargez d’abord le fichier FoxIDs.SeedTool-x.x.x-win-x64.zip pour Windows ou FoxIDs.SeedTool-x.x.x-linux-x64.zip pour Linux depuis la version FoxIDs et décompressez le seed tool.
Le seed tool est configuré dans le fichier appsettings.json.
L’accès pour importer des utilisateurs est accordé dans votre environnement master.
Créez un client OAuth 2.0 pour le seed tool dans le FoxIDs Control Client :
Ceci accordera au seed tool un accès complet à votre tenant, pour le moindre privilège voir API access rights.
- Connectez-vous à votre tenant (en auto-hébergé, le tenant main)
- Sélectionnez l’environnement master (dans le sélecteur d’environnement en haut au centre)
- Sélectionnez l’onglet Applications
- Cliquez sur New Application
- Cliquez sur Backend Application
- Sélectionnez Show advanced
- Ajoutez un Name par exemple
Seed tool - Changez le Client ID en
foxids_seed - Cliquez sur Register
- Mémorisez l’Authority.
- Mémorisez le Client secret.
- Cliquez sur Close
- Cliquez sur l’application dans la liste pour l’ouvrir
- Dans la section Resource and scopes
- Retirez la coche de Default resource 'foxids_seed' for the application itself
- Cliquez sur Add Resource and scope et ajoutez la ressource
foxids_control_api - Cliquez ensuite sur Add Scope et ajoutez le scope
foxids:tenant
- Sélectionnez Show advanced
- Dans la section Issue claims
- Cliquez sur Add Claim et ajoutez le claim
role - Cliquez ensuite sur Add Value et ajoutez la valeur de claim
foxids:tenant
- Cliquez sur Add Claim et ajoutez le claim
- Cliquez sur Update

Ajoutez votre endpoint FoxIDs Control API et le tenant et l’environment ainsi que l’Authority et le Client secret du seed tool, et le chemin du fichier CSV à la configuration du seed tool.
"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"
}
Exécuter le seed tool et importer les utilisateurs
- Démarrez une invite de commandes
- Exécutez le seed tool avec
SeedTool.exe - Cliquez sur
Upour démarrer l’import des utilisateurs
L’import peut prendre un certain temps selon le nombre d’utilisateurs.