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

> Découvrez comment configurer les métadonnées du jeton d’actualisation d’Auth0 à l’aide d’Actions ou de la Management API.

# Configurer les métadonnées du jeton d’actualisation

Pour configurer les métadonnées du jeton d’actualisation, vous pouvez utiliser une [Action post-login](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger) d’Auth0 et la [Management API](https://auth0.com/docs/api/management/v2).

<div id="auth0-post-login-actions">
  ## Actions post-login d’Auth0
</div>

Vous pouvez gérer les opérations CRUD des métadonnées du jeton d’actualisation à l’aide des objets `api.refreshToken` dans une [Action post-login](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger). Cela vous permet de gérer les métadonnées du jeton d’actualisation selon une logique propre à l’utilisateur ou au contexte.

<div id="retrieve-existing-refresh-token-metadata">
  ### Récupérer les métadonnées existantes associées au jeton d’actualisation
</div>

Utilisez l’objet `event.refresh_token.metadata` pour lire les métadonnées du jeton d’actualisation :

```javascript lines theme={null}
const deviceName = event.refresh_token?.metadata?.deviceName;
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  L’objet `event.refresh_token.metadata` contient les métadonnées définies dans :

  * les Actions précédentes du même flux
  * des transactions antérieures, si le jeton d’actualisation a été réutilisé lors d’un échange de jeton d’actualisation
</Callout>

<div id="add-or-update-existing-metadata">
  ### Ajouter ou mettre à jour les métadonnées existantes
</div>

Utilisez la méthode `api.refreshToken.setMetadata()` pour définir ou mettre à jour les métadonnées du jeton d’actualisation :

```javascript lines theme={null}
api.refreshToken.setMetadata("deviceName", "Auth0's iPhone");
```

Les modifications sont immédiatement disponibles dans l’objet `event.refresh_token` lors des Actions suivantes.

<div id="delete-refresh-token-metadata">
  ### Supprimer les métadonnées du jeton d’actualisation
</div>

Utilisez les méthodes `api.refreshToken` suivantes pour supprimer les métadonnées du jeton d’actualisation :

* `api.refreshToken.deleteMetadata("key")` supprime les métadonnées du jeton d’actualisation indiquées

* `api.refreshToken.evictMetadata()` supprime toutes les métadonnées du jeton d’actualisation

Pour en savoir plus sur ces objets, consultez :

* [objet Event](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object) : découvrez l’objet Event du jeton d’actualisation et ses propriétés.
* [objet API](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object) : découvrez l’objet API du jeton d’actualisation et ses méthodes.

<div id="auth0-management-api">
  ## Auth0 Management API
</div>

Vous pouvez gérer les requêtes CRUD (création, remplacement, mise à jour et suppression) associées aux métadonnées du jeton d’actualisation à l’aide de la Management API :

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les requêtes vers le point de terminaison `/api/v2/refresh-tokens/{id}` nécessitent un [jeton d’accès à la Management API](/docs/fr-ca/secure/tokens/access-tokens) avec la portée `update:refresh_tokens`.
</Callout>

### Récupérer les métadonnées d’un jeton d’actualisation existant

Effectuez une requête `GET` au point de terminaison [`/api/v2/refresh-tokens/{id}`](https://auth0.com/docs/api/management/v2/refresh-tokens/get-refresh-token) :

```bash lines theme={null}
GET /api/v2/refresh-tokens/{id}
```

<div id="add-or-update-existing-refresh-token-metadata">
  ### Ajouter ou mettre à jour les métadonnées d’un jeton d’actualisation existant
</div>

Envoyez une requête `PATCH` au point de terminaison [`/api/v2/refresh-tokens/{id}`](https://auth0.com/docs/api/management/v2/refresh-tokens/patch-refresh-token) :

```bash lines theme={null}
PATCH /api/v2/refresh-tokens/{id}
Content-Type: application/json

{
  "refresh_token_metadata": {
    "my_metadata": "my new metadata"
  }
}
```

<div id="delete-refresh-token-metadata">
  ### Supprimer les métadonnées du jeton d’actualisation
</div>

Effectuez une requête `PATCH` vers le point de terminaison [`/api/v2/refresh-tokens/{id}`](https://auth0.com/docs/api/management/v2/refresh-tokens/patch-refresh-token) avec un objet de métadonnées vide :

```bash lines theme={null}
PATCH /api/v2/refresh-tokens/{id}
Content-Type: application/json

{
  "refresh_token_metadata": {}
}
```

<div id="use-case-store-and-consume-organization-context">
  ## Cas d’utilisation : stocker et exploiter le contexte de l’organisation
</div>

Vous pouvez utiliser les métadonnées du jeton d’actualisation pour stocker le contexte de l’organisation lors de l’authentification initiale, puis l’exploiter plus tard lors des échanges de jeton d’actualisation. C’est utile pour les systèmes en aval, comme les pipelines d’audit, d’analyse et de révocation.

<div id="set-metadata-at-initial-authentication">
  ### Définir les métadonnées lors de l’authentification initiale
</div>

Lors de la connexion initiale, définissez le contexte de l’organisation dans les métadonnées du jeton d’actualisation :

```javascript lines theme={null}
/**
 * Action post-connexion
 * Ajoute le contexte d'organisation aux métadonnées du jeton d'actualisation lors de l'authentification initiale.
 * Ces métadonnées seront disponibles lors des échanges de jetons d'actualisation ultérieurs.
 */
exports.onExecutePostLogin = async (event, api) => {
  // Continuer uniquement si la transaction cible une organisation
  if (!event.organization) return;

  // Garder les valeurs courtes et de type chaîne seulement (les métadonnées du jeton d'actualisation exigent des chaînes)
  const orgId = String(event.organization.id || "");
  const orgSlug = String(event.organization.name || "");
  const orgDisplay = String(event.organization.display_name || orgSlug);

  // Définir les métadonnées - elles seront stockées avec le jeton d'actualisation
  api.refreshToken.setMetadata("org_id", orgId);
  api.refreshToken.setMetadata("org_slug", orgSlug);
  api.refreshToken.setMetadata("org_name", orgDisplay);
};
```

<div id="consume-metadata-during-refresh-token-exchange">
  ### Utiliser les métadonnées lors d’un échange de jeton d’actualisation
</div>

Lors d’un échange de jeton d’actualisation, l’objet `event.refresh_token` existe et vous pouvez lire les métadonnées stockées précédemment :

```javascript lines theme={null}
/**
 * Post-Login Action
 * Consomme le contexte d'organisation à partir des métadonnées du refresh token lors de l'échange de token.
 * Utilisez ceci pour appliquer des politiques ou ajouter des claims selon le contexte d'authentification d'origine.
 */
exports.onExecutePostLogin = async (event, api) => {
  // Vérifier s'il s'agit d'un échange de refresh token (event.refresh_token existe)
  if (!event.refresh_token) return;

  // Lire le contexte d'organisation stocké lors de l'authentification initiale
  const orgId = event.refresh_token.metadata?.org_id;
  const orgSlug = event.refresh_token.metadata?.org_slug;

  if (orgId) {
    // Utiliser le contexte d'organisation pour la logique conditionnelle
    console.log(`Refresh token exchange for organization: ${orgSlug}`);
    
    // Exemple : Ajouter des custom claims selon le contexte d'organisation d'origine
    api.accessToken.setCustomClaim("org_id", orgId);
  }
};
```

<div id="retrieve-via-management-api">
  ### Récupérer au moyen de la Management API
</div>

Vous pouvez aussi consulter les métadonnées du jeton d’actualisation au moyen du point de terminaison [/api/v2/refresh-tokens/{id}](https://auth0.com/docs/api/management/v2/refresh-tokens/get-refresh-token) :

```bash lines theme={null}
GET /api/v2/refresh-tokens/{id}
```

Exemple de réponse :

```json lines theme={null}
{
  "refresh_token_metadata": {
    "org_id": "org_abc123",
    "org_slug": "acme",
    "org_name": "Acme Corp"
  }
}
```

<div id="use-case-track-and-validate-device-information">
  ## Cas d’utilisation : Suivre et valider les informations sur l’appareil
</div>

Vous pouvez utiliser les métadonnées du jeton d’actualisation pour consigner des informations sur l’appareil au moment de l’authentification initiale et les valider lors des échanges subséquents du jeton d’actualisation à des fins de sécurité.

<div id="set-device-information-at-initial-authentication">
  ### Définir les renseignements sur l’appareil lors de l’authentification initiale
</div>

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  // Ne définir les informations de l'appareil que si ce n'est PAS un échange de refresh token
  // (c.-à-d., il s'agit de l'authentification initiale)
  if (event.refresh_token) return;

  // Stocker les informations de l'appareil dans les métadonnées du refresh token
  api.refreshToken.setMetadata("initial_ip", event.request?.ip || "unknown");
  api.refreshToken.setMetadata("initial_asn", event.request?.asn?.value || "unknown");
  api.refreshToken.setMetadata("initial_country", event.request?.geoip?.country_code || "unknown");
  api.refreshToken.setMetadata("initial_user_agent", event.request?.user_agent || "unknown");
};
```

<div id="validate-device-information-during-refresh-token-exchange">
  ### Valider les renseignements de l’appareil lors de l’échange du jeton d’actualisation
</div>

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  // Valider uniquement s'il s'agit d'un échange de jeton d'actualisation
  if (!event.refresh_token) return;

  // Lire les informations d'appareil d'origine
  const initialCountry = event.refresh_token.metadata?.initial_country;
  const currentCountry = event.request?.geoip?.country_code;

  // Exemple : Détecter un changement de pays et agir en conséquence
  if (initialCountry && currentCountry && initialCountry !== currentCountry) {
    console.log(`Country changed from ${initialCountry} to ${currentCountry}`);
    
    // Option 1 : Révoquer le jeton d'actualisation en cas d'activité suspecte
    // api.refreshToken.revoke("Suspicious country change detected");
    
    // Option 2 : Mettre à jour les métadonnées pour suivre le changement
    api.refreshToken.setMetadata("country_changed", "true");
    api.refreshToken.setMetadata("last_country", currentCountry);
  }
};
```

<div id="error-handling">
  ## Gestion des erreurs
</div>

Vous pouvez consulter les événements de journal liés aux métadonnées des jetons d’actualisation en accédant à [Dashboard > Monitoring > Logs](https://manage.auth0.com/#/logs) ou récupérer les logs au moyen du point de terminaison [Management API logs](/docs/fr-ca/api/management/v2/logs/get-logs).

* Si une erreur se produit lors de l’ajout ou de la mise à jour des métadonnées des jetons d’actualisation avec Actions, la transaction d’authentification échoue et une erreur est renvoyée à l’URL de rappel.

Un code d’événement d’échec `f` est consigné avec l’erreur correspondante :

```json lines theme={null}
{
  "error": "access_denied",
  "error_description": "Failed to set refresh token metadata: Invalid metadata: Metadata keys may only include letters, numbers, underscores, or hyphens",
  "state": "my-custom-state"
}
```

* En cas d’échec lors de la gestion des métadonnées du jeton d’actualisation au moyen de l’Auth0 Management API, l’API renvoie une erreur `HTTP status: 400` ainsi que le message correspondant :

```json lines theme={null}
{
  "statusCode": 400,
  "message": "Metadata must not exceed 25 entries. Each key and value must be ≤ 255 characters."
}
```

<div id="learn-more">
  ## En savoir plus
</div>

* [Métadonnées du jeton d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens/refresh-token-metadata)
* [Jetons d’actualisation avec Actions](/docs/fr-ca/secure/tokens/refresh-tokens/manage-refresh-tokens-actions)
* [Jetons d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens)
* [Objet d’événement post-login](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object)
* [Objet API post-login](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object)
