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 :

  • Email
  • 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.

  1. Connectez-vous à votre tenant (en auto-hébergé, le tenant main)
  2. Sélectionnez l’environnement master (dans le sélecteur d’environnement en haut au centre)
  3. Sélectionnez l’onglet Applications
  4. Cliquez sur New Application
  5. Cliquez sur Backend Application
    1. Sélectionnez Show advanced
    2. Ajoutez un Name par exemple Seed tool
    3. Changez le Client ID en foxids_seed
    4. Cliquez sur Register
    5. Mémorisez l’Authority.
    6. Mémorisez le Client secret.
    7. Cliquez sur Close
  6. Cliquez sur l’application dans la liste pour l’ouvrir
  7. Dans la section Resource and scopes
    1. Retirez la coche de Default resource 'foxids_seed' for the application itself
    2. Cliquez sur Add Resource and scope et ajoutez la ressource foxids_control_api
    3. Cliquez ensuite sur Add Scope et ajoutez le scope foxids:tenant
  8. Sélectionnez Show advanced
  9. Dans la section Issue claims
    1. Cliquez sur Add Claim et ajoutez le claim role
    2. Cliquez ensuite sur Add Value et ajoutez la valeur de claim foxids:tenant
  10. Cliquez sur Update

FoxIDs Control Client - master seed tool client

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

  1. Démarrez une invite de commandes
  2. Exécutez le seed tool avec SeedTool.exe
  3. Cliquez sur U pour démarrer l’import des utilisateurs

L’import peut prendre un certain temps selon le nombre d’utilisateurs.

Votre confidentialité

Nous utilisons des cookies pour améliorer votre expérience sur nos sites. Cliquez sur « Accepter tous les cookies » pour accepter l'utilisation des cookies. Pour refuser les cookies non essentiels, cliquez sur « Cookies nécessaires uniquement ».

Consultez notre politique de confidentialité pour en savoir plus