> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Comment définir des identifiants d'utilisateur personnalisés avec les Actions pour les nouveaux utilisateurs dans les connexions de base de données

> Écrivez une Action `pre-user-registration` pour attribuer des `user_id` personnalisés lors de la création de nouveaux utilisateurs dans les connexions de base de données, afin d'assurer la cohérence des identifiants d'un système à l'autre ou d'en uniformiser le format.

> [!WARNING]
>
> **La fonctionnalité custom user ID assignment with Actions est en .**

Par défaut, lors de la création d'un nouvel utilisateur, Auth0 génère automatiquement un [attribut `user_id`](https://auth0.com/docs/fr-ca/manage-users/user-accounts/user-profiles/user-profile-structure#param-identities) qui sert d'identifiant unique à cet utilisateur.

Les connexions de base de données permettent de définir un identifiant utilisateur personnalisé au moment de la création de l'utilisateur. Vous voudrez peut-être préciser vos propres identifiants utilisateur si vous avez besoin d'un formatage normalisé ou d'une cohérence entre les systèmes. Par exemple :

* Conserver une structure d'identifiant utilisateur existante lors d'une migration d'un autre fournisseur d'identité vers Auth0, afin que les jetons, les journaux d'audit et les intégrations demeurent cohérents.

* Assurer la compatibilité avec des systèmes de données ou de facturation qui exigent des formats précis, comme des identifiants utilisateur UUID v4 ou des entiers séquentiels.

* Faire correspondre les identifiants utilisateur aux clés primaires d'une base de données interne ou d'un CRM afin de simplifier les jointures de données et la production de rapports.

* Composer des identifiants utilisateur déterministes à partir d'attributs connus, comme les noms de locataires ou les métadonnées d'application.

Vous pouvez définir un `user_id` personnalisé en appelant `api.user.setUserId()` dans une [Action](https://auth0.com/docs/fr-ca/customize/actions/actions-overview.md) ajoutée au [trigger `pre-user-registration`](https://auth0.com/docs/fr-ca/customize/actions/explore-triggers/pre-user-registration), qui se déclenche avant la création d'un nouveau profil utilisateur.

## Comment les identifiants d'utilisateur sont déterminés

Dans le profil utilisateur, [le tableau `identities`](https://auth0.com/docs/fr-ca/manage-users/user-accounts/user-profiles/user-profile-structure#param-identities) contient des objets renfermant l'information de chaque fournisseur d'identité auprès duquel l'utilisateur s'authentifie. Définir un identifiant d'utilisateur personnalisé fixe l'attribut `user_id` dans l'objet du tableau `identities` correspondant à la connexion de base de données.

Il existe différentes façons de définir un identifiant d'utilisateur `identities` personnalisé selon la manière dont vous créez l'utilisateur. Le tableau suivant résume les méthodes de création offertes ainsi que l'ordre de préséance selon lequel le `user_id` est défini :

| Méthode de création de l'utilisateur | Préséance du `user_id` |
| - | - |
| Le [terminal Create a new user de l'Authentication API](https://auth0.com/docs/fr-ca/api/authentication/signup/create-a-new-user.md) (`POST /dbconnections/signup`) ou l'inscription par [connexion universelle](https://auth0.com/docs/fr-ca/authenticate/login/auth0-universal-login) | <ol><li>`api.user.setUserId()` dans une Action `pre-user-registration`</li> <li>Identifiant d'utilisateur généré par Auth0</li></ol> |
| Le [terminal Create a user de la Management API](https://auth0.com/docs/fr-ca/api/management/v2/users/post-users.md) (`POST /users`) | <ol><li>`api.user.setUserId()` dans une Action `pre-user-registration`</li> <li>[`user_id` défini dans le corps de la requête](https://auth0.com/docs/fr-ca/api/management/v2/users/post-users#body-user-id)</li> <li>Identifiant d'utilisateur généré par Auth0</li></ol> |
| Une connexion de base de données personnalisée dont la [migration automatique](https://auth0.com/docs/fr-ca/manage-users/user-migration/configure-automatic-migration-from-your-database.md) est activée | <ol><li>`api.user.setUserId()` dans une Action `pre-user-registration`</li> <li>L'[attribut `user_id` du profil d'utilisateur normalisé](https://auth0.com/docs/fr-ca/manage-users/user-accounts/user-profiles/user-profile-structure#param-user-id) retourné par les scripts d'action de base de données [Login](https://auth0.com/docs/fr-ca/authenticate/database-connections/custom-db/templates/login.md) et [Get User](https://auth0.com/docs/fr-ca/authenticate/database-connections/custom-db/templates/get-user.md)</li><li>Identifiant d'utilisateur généré par Auth0</li></ol> |
| Une [tâche d'importation groupée d'utilisateurs](https://auth0.com/docs/fr-ca/manage-users/user-migration/bulk-user-imports.md) | <ol><li>La [propriété `user_id` du JSON d'importation groupée](https://auth0.com/docs/fr-ca/manage-users/user-migration/bulk-user-import-schema#param-user-id)</li> <li>Identifiant d'utilisateur généré par Auth0</li></ol> |

En résumé, un identifiant d'utilisateur défini avec `api.user.setUserId()` dans une Action `pre-user-registration` a préséance sur les autres façons de définir un identifiant d'utilisateur personnalisé, mais le trigger `pre-user-registration` ne se déclenche pas dans le cas des tâches d'importation groupée.

De plus, Auth0 définit le [`user_id` de niveau racine](https://auth0.com/docs/fr-ca/manage-users/user-accounts/user-profiles/user-profile-structure#param-user-id) du profil utilisateur en fonction de l'identité principale du profil, soit la première identité du tableau `identities`.

Le `user_id` de niveau racine correspond à l'identifiant d'utilisateur de l'identité principale préfixé par la stratégie de connexion (par exemple, `auth0|your_custom_id`). Il sert notamment de valeur à la [demande `sub`](https://auth0.com/docs/fr-ca/secure/tokens/json-web-tokens/json-web-token-claims); assurez-vous donc que les systèmes en aval s'attendent à recevoir la valeur préfixée.

## Définir des identifiants d'utilisateur personnalisés avec une Action `pre-user-registration`

Pour définir un `user_id` personnalisé avec une Action `pre-user-registration`, vous devez créer l'Action, écrire le code qui attribue à l'identifiant d'utilisateur la valeur souhaitée, puis ajouter l'Action au trigger `pre-user-registration`.

### 1. Créer l'Action

Allez à **[Dashboard > Actions > Library](https://manage.auth0.com/#/actions/library)**. Sélectionnez **Create Action**, puis choisissez **Create Custom Action** dans le menu déroulant.

Dans la fenêtre **Create Action** qui s'ouvre, remplissez les champs suivants :

* **Name** : choisissez un nom pour votre action, par exemple « Set Custom User ID ».
* **Trigger** : sélectionnez **Pre User Registration**.
* **Runtime** : choisissez votre environnement d'exécution Node.

Sélectionnez ensuite **Create** pour accéder à l'éditeur de code Actions de la nouvelle Action.

### 2. Écrire le code de l'Action

Dans l'éditeur de code Actions, [écrivez le code de votre Action](https://auth0.com/docs/fr-ca/customize/actions/action-coding-guidelines.md) en utilisant `api.user.setUserId()` pour définir l'identifiant d'utilisateur selon votre cas d'utilisation.

Les identifiants d'utilisateur personnalisés doivent respecter les exigences suivantes :

* Le `user_id` doit être unique au sein de la connexion. Si un utilisateur ayant le `user_id` spécifié existe déjà, la création échoue.

* Le `user_id` doit passer la même validation que le [paramètre de corps `user_id` du terminal Create a user](https://auth0.com/docs/fr-ca/api/management/v2/users/post-users#body-user-id) de la Management API.

Si la création d'un utilisateur échoue en raison de problèmes liés à l'identifiant d'utilisateur, consultez vos [journaux de locataire](https://auth0.com/docs/fr-ca/deploy-monitor/logs.md) à la recherche du [type de journal `fs`](https://auth0.com/docs/fr-ca/tenant-logs/auth-signup-fail/fs) (échec d'inscription).

> **Exemple : Générer un UUID v4**
>
> Vous pouvez générer un UUID v4 à l'aide du module `crypto` intégré de Node :
>
> ```js wrap Example: Generate a UUID v4 theme={null}
> exports.onExecutePreUserRegistration = async (event, api) => {
>   const crypto = require('crypto');
>   api.user.setUserId(crypto.randomUUID());
> };
> ```

> **Exemple : Générer une version précise d'UUID**
>
> Si vous avez besoin d'une version précise d'UUID (v1, v5, v7, etc.), ajoutez le paquet npm `uuid` comme dépendance et utilisez-le dans votre Action :
>
> ```js wrap Example: Generate a specific UUID version theme={null}
> const { v7: uuidv7 } = require('uuid');
>
> exports.onExecutePreUserRegistration = async (event, api) => {
>   api.user.setUserId(uuidv7());
> };
> ```

> **Exemple : Composer un identifiant à partir des données d'inscription**
>
> Vous pouvez composer un identifiant d'utilisateur déterministe à partir des données d'inscription, comme une valeur `app_metadata` :
>
> ```js wrap Example: Compose an ID from sign-up data theme={null}
> exports.onExecutePreUserRegistration = async (event, api) => {
>   const externalId = event.user.app_metadata?.external_id;
>   if (externalId) {
> 	api.user.setUserId(externalId);
>   }
> };
> ```

Lorsque vous avez fini d'écrire et de [tester l'Action](https://auth0.com/docs/fr-ca/customize/actions/test-actions.md), sélectionnez **Deploy**.

### 3. Ajouter l'Action au trigger

Après avoir déployé l'Action, allez à **[Dashboard > Actions > Triggers > Pre User Registration](https://manage.auth0.com/#/actions/triggers/pre-user-registration)**.

Dans la section **Add Action** à droite, sous **Custom**, glissez la nouvelle Action que vous avez créée dans le flux, entre **Start** et **Complete**. Sélectionnez ensuite **Apply**.

## Limites

* La définition d'un identifiant d'utilisateur personnalisé avec le trigger `pre-user-registration` n'est pas prise en charge pour les connexions sans mot de passe.

* Le trigger `pre-user-registration` ne se déclenche pas lors des tâches d'importation groupée.

* Vous ne pouvez pas définir un `user_id` personnalisé pour les utilisateurs qui se connectent au moyen d'une connexion sociale ou d'entreprise, car ces ID sont fournis par le fournisseur d'identité externe.

* Vous ne pouvez pas modifier le `user_id` d'un utilisateur existant.
