> ## 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.

# Révoquer les jetons d’actualisation

> Découvrez comment révoquer un jeton d’actualisation s’il a été compromis à l’aide de l’Auth0 Dashboard, de l’Authentication API ou de la Management API.

export const AuthCodeGroup = ({children, dropdown}) => {
  const [processedChildren, setProcessedChildren] = useState(children);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        const processChildren = node => {
          if (typeof node === "string") {
            let processedNode = node;
            for (const [key, value] of window.rootStore.variableStore.values.entries()) {
              const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
              processedNode = processedNode.replaceAll(new RegExp(escapedKey, "g"), value);
            }
            return processedNode;
          } else if (Array.isArray(node)) {
            return node.map(processChildren);
          } else if (node && node.props && node.props.children) {
            return {
              ...node,
              props: {
                ...node.props,
                children: processChildren(node.props.children)
              }
            };
          }
          return node;
        };
        setProcessedChildren(processChildren(children));
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  return <CodeGroup dropdown={dropdown}>{processedChildren}</CodeGroup>;
};

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASQUÉ*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

Vous pouvez révoquer des <Tooltip tip="Refresh Token : jeton utilisé pour obtenir un nouveau jeton d’accès sans obliger les utilisateurs à se reconnecter." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=refresh+tokens">jetons d’actualisation</Tooltip> s’ils ont été compromis. Auth0 traite la révocation d’un jeton comme si celui-ci avait potentiellement été exposé à des acteurs malveillants.

De plus, vous pouvez envisager d’activer la [rotation des jetons d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens/refresh-token-rotation) afin que, chaque fois qu’un client échange un jeton d’actualisation pour obtenir un nouveau jeton d’accès, un nouveau jeton d’actualisation soit également renvoyé.

<div id="choose-whether-token-revocation-deletes-grants">
  ## Choisissez si la révocation d’un jeton supprime les grants
</div>

Un grant permet à une application d’accéder à une ressource d’une autre entité sans exposer les informations d’identification de l’utilisateur. Les jetons sont émis dans le contexte d’un grant.

Lorsqu’un grant est révoqué, tous les jetons émis dans le contexte de ce grant le sont aussi. Cependant, lorsqu’un jeton est révoqué, le grant n’a pas nécessairement à l’être.

Vous pouvez choisir si la révocation d’un jeton supprime le grant associé dans les paramètres de votre tenant :

1. Accédez à [Dashboard > Paramètres du tenant > Avancé](https://manage.auth0.com/#/tenant/advanced).

2. Dans la section **Paramètres**, activez ou désactivez la **bascule de suppression du grant lors de la révocation d’un jeton d’actualisation**.

   * Activez la bascule pour supprimer le grant sous-jacent lorsque vous révoquez le jeton d’actualisation.

   Chaque requête de révocation invalide tous les autres jetons associés au même grant d’autorisation, ce qui révoque tous les jetons d’actualisation qui ont été émis pour le même utilisateur, la même application et la même audience.

   * Désactivez la bascule pour conserver le grant sous-jacent lorsque vous révoquez le jeton d’actualisation.

   Lorsqu’un appareil est dissocié, seul le jeton d’actualisation associé est révoqué, et le grant reste intact.

Cette fonctionnalité est désactivée par défaut pour tous les tenants créés après le 13 janvier 2021.

<div id="revoke-a-refresh-token">
  ## Révoquer un jeton d’actualisation
</div>

Vous pouvez révoquer un jeton d’actualisation de l’une des façons suivantes :

* [À l’aide de l’Auth0 Dashboard](#using-the-auth0-dashboard)
* [À l’aide de l’Authentication API](#using-the-authenticaton-api)
* [À l’aide de la Management API](#using-the-management-api)

<div id="using-the-auth0-dashboard">
  ### Utilisation de l’Auth0 Dashboard
</div>

Vous pouvez utiliser l’Auth0 Dashboard pour révoquer l’accès autorisé d’un utilisateur à l’application qui a émis le jeton. Cela invalide le jeton d’actualisation, ce qui revient fonctionnellement à révoquer le jeton lui-même.

1. Accédez à [Dashboard > User Management > Users](https://manage.auth0.com/#/users), puis sélectionnez le nom de l’utilisateur à consulter.
2. Sélectionnez l’onglet **Authorized Applications**. Cette page répertorie toutes les applications auxquelles l’utilisateur a accordé un accès.
3. Pour révoquer l’accès de l’utilisateur à une application autorisée et ainsi invalider le jeton d’actualisation, cliquez sur **Revoke**.

<div id="using-the-authentication-api">
  ### Utilisation de l’Authentication API
</div>

Vous pouvez utiliser le [point de terminaison Révoquer un jeton d’actualisation](https://auth0.com/docs/api/authentication/revoke-refresh-token/revoke-refresh-token) de l’Authentication API pour révoquer un jeton d’actualisation.

Le point de terminaison permet l’accès sans le <Tooltip tip="Client Secret : secret utilisé par un client (application) pour s’authentifier auprès de l’Authorization Server; il ne devrait être connu que du client et de l’Authorization Server et doit être suffisamment aléatoire pour ne pas pouvoir être deviné." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=client+secret">client secret</Tooltip> pour les applications qui ne peuvent pas le conserver en lieu sûr (comme les applications natives). L’application elle-même doit avoir sa [méthode d’authentification](/docs/fr-ca/get-started/applications/credentials) (`tokenEndpointAuthMethod`) définie à none.

Lorsque vous faites une requête, l’API valide d’abord les identifiants de l’application, puis vérifie si le jeton a été émis pour l’application qui effectue la requête de révocation. Si cette validation échoue, la requête est refusée et l’application est informée de l’erreur.

Ensuite, l’API invalide le jeton. L’invalidation a lieu immédiatement, et le jeton ne peut plus être utilisé après la révocation. Chaque requête de révocation invalide tous les jetons émis pour le même grant d’autorisation.

Pour plus d’information, y compris les paramètres du body, les schémas de réponse et des exemples de code, consultez la documentation de l’Authentication API sur le [point de terminaison Révoquer un jeton d’actualisation](https://auth0.com/docs/api/authentication/revoke-refresh-token/revoke-refresh-token).

<div id="using-the-management-api-device-credentials-endpoints">
  ### Utilisation des points de terminaison des identifiants d’appareil de la Management API
</div>

Pour révoquer un jeton d’actualisation à l’aide des points de terminaison des identifiants d’appareil de l’Auth0 Management API :

1. Obtenez l’`id` du jeton d’actualisation que vous voulez révoquer à l’aide du [point de terminaison de récupération des identifiants d’appareil](https://auth0.com/docs/api/management/v2/device-credentials/get-device-credentials).

   Spécifiez `type=refresh_token` et un `user_id` avec un jeton d’accès contenant la portée `read:device_credentials`. Pour affiner les résultats, vous pouvez aussi préciser le `client_id` associé au jeton (s’il est connu).

2. Révoquez le jeton d’actualisation à l’aide du [point de terminaison de suppression d’un identifiant d’appareil](https://auth0.com/docs/api/management/v2/device-credentials/delete-device-credentials-by-id). Spécifiez un jeton d’accès contenant la portée `delete:device_credentials` et l’ID du jeton d’actualisation.

<div id="using-the-management-api-refresh-token-endpoints">
  ### Utilisation des points de terminaison des jetons d’actualisation de la Management API
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les points de terminaison des jetons d’actualisation de l’Auth0 Management API sont actuellement offerts uniquement aux clients ayant un forfait Enterprise. Pour en savoir plus, consultez [Tarification](https://auth0.com/pricing).
</Callout>

Les points de terminaison des jetons d’actualisation de la Management API remplacent les points de terminaison de la ressource `/v2/device-credentials`, en offrant des propriétés étendues et des opérations de révocation en bloc.

Vous pouvez afficher ou révoquer un jeton d’actualisation précis à l’aide des points de terminaison suivants :

* Afficher les renseignements d’un jeton d’actualisation par ID au moyen du [point de terminaison Get a refresh token](https://auth0.com/docs/api/management/v2/refresh-tokens/get-refresh-token)
* Révoquer un jeton d’actualisation par ID au moyen du [point de terminaison Delete a refresh token](https://auth0.com/docs/api/management/v2/refresh-tokens/delete-refresh-token)
* Afficher tous les jetons d’actualisation d’un utilisateur au moyen du [point de terminaison Get refresh tokens for a user](https://auth0.com/docs/api/management/v2/users/get-refresh-tokens-for-user)
* Révoquer tous les jetons d’actualisation d’un utilisateur au moyen du [point de terminaison Delete refresh tokens for a user](https://auth0.com/docs/api/management/v2/users/delete-refresh-tokens-for-user)

<div id="considerations-and-limitations">
  ## Considérations et limites
</div>

* Avec le [Device Authorization Flow](/docs/fr-ca/get-started/authentication-and-authorization-flow/device-authorization-flow), la seule façon de forcer un appareil à demander une nouvelle autorisation consiste à révoquer le jeton d’actualisation attribué à l’appareil. L’appareil ne sera pas forcé de demander une nouvelle autorisation tant que le jeton d’accès actuel n’aura pas expiré et que l’application n’essaiera pas d’utiliser le jeton d’actualisation révoqué. Pour en savoir plus, consultez [Unlink Devices from Users](/docs/fr-ca/manage-users/user-accounts/unlink-devices-from-users).

* Lors de l’utilisation de [Refresh Token Rotation](/docs/fr-ca/secure/tokens/refresh-tokens/refresh-token-rotation), si un jeton précédemment invalidé est utilisé, l’ensemble des jetons d’actualisation émis depuis l’émission de ce jeton invalidé sera immédiatement révoqué, ce qui obligera l’utilisateur final à s’authentifier de nouveau.

* Les opérations de révocation (`DELETE`) de jetons d’actualisation s’exécutent de façon asynchrone et la cohérence peut prendre un certain temps.

* Les jetons d’actualisation émis le 21-09-2023 ou après cette date (le 22-02-2024 pour les tenants de la région US-3) contiennent la propriété d’ID de session (`session_id`) avec la valeur appropriée. Les jetons d’actualisation émis avant cette date contiennent cette propriété avec une valeur `null`.

Pour en savoir plus sur les limites des jetons d’actualisation, consultez [Refresh Tokens limitations](/docs/fr-ca/secure/tokens/refresh-tokens).
