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

# Configurer et utiliser les Online Refresh Tokens

> Comment configurer et utiliser les Online Refresh Tokens.

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "bêta",
    "ea": "Accès anticipé"
  };
  const stageText = stageTextMap[stage] || "une phase de lancement du produit";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>Cette fonctionnalité est offerte avec les forfaits {linkify(`${plans}`, "https://auth0.com/pricing")}. </>}
            {contact && "Pour y participer, communiquez avec " + contact + ". "}
            {terms && <>En utilisant cette fonctionnalité, vous acceptez les conditions applicables de l’essai gratuit énoncées dans le {linkify("Master Subscription Agreement", "https://www.okta.com/legal")} d’Okta.</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>La fonctionnalité {feature} est en {linkify(stageText, prsLink)}.</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

<ReleaseStageNotice feature="Online Refresh Tokens" stage="bêta" contact="votre gestionnaire de compte technique" />

<h2 id="configure-orts">
  Configurer les ORT
</h2>

Les Online Refresh Tokens (ORTs) doivent être activés au niveau de l’[API (Resource Server)](/docs/fr-ca/get-started/apis/api-settings), dans l’Auth0 Dashboard ou au moyen de la Management API.

<h3 id="configure-using-the-dashboard">
  Configurer à l’aide du Dashboard
</h3>

1. Accédez à [Dashboard > Applications > API](https://manage.auth0.com/#/apis).

2. Sélectionnez l’API que vous souhaitez configurer.

3. Dans l’onglet **Settings**, activez la bascule **Allow Online Access**.

   <Frame>
     <img src="https://mintlify.s3.us-west-1.amazonaws.com/docs-staging/docs/images/refresh-tokens/allow-online-access.png" alt="Dashboard Applications API Settings Allow Online Access" />
   </Frame>

4. Sélectionnez **Save**.

Pour consulter et configurer les valeurs de délai d’inactivité et de durée de vie absolue des sessions, consultez les paramètres [Expiration de session du tenant](https://manage.auth0.com/#/tenant/advanced). Pour en savoir plus, lisez [Configurer la durée de vie de la session](/docs/fr-ca/manage-users/sessions/configure-session-lifetime).

<h3 id="configure-using-the-management-api">
  Configurer à l’aide de la Management API
</h3>

Pour activer les ORT, effectuez une requête `PATCH` au endpoint [Update Resource Server](/docs/fr-ca/api/management/v2/resource-servers/patch-resource-servers-by-id) :

<Tabs>
  <Tab title="Auth0 CLI">
    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">Vous utilisez Auth0 CLI? Si ce n’est pas déjà fait, [configurez et authentifiez votre session CLI](/docs/fr-ca/deploy-monitor/auth0-cli) avant d’exécuter cette commande.</Callout>

    ```bash theme={null}
    auth0 api patch "resource-servers/<YOUR_RESOURCE_SERVER_ID>" \
      --data '{"allow_online_access": true}'
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl --request PATCH \
      --url 'https://<YOUR_DOMAIN>/api/v2/resource-servers/<YOUR_RESOURCE_SERVER_ID>' \
      --header 'authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
      --header 'content-type: application/json' \
      --data '{"allow_online_access": true}'
    ```
  </Tab>
</Tabs>

Pour vérifier la configuration, effectuez une requête `GET` au serveur de ressources :

<Tabs>
  <Tab title="Auth0 CLI">
    ```bash theme={null}
    auth0 api get "resource-servers/<YOUR_RESOURCE_SERVER_ID>"
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl --request GET \
      --url 'https://<YOUR_DOMAIN>/api/v2/resource-servers/<YOUR_RESOURCE_SERVER_ID>' \
      --header 'authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>'
    ```
  </Tab>
</Tabs>

La réponse comprend la propriété `allow_online_access` :

```json theme={null}
{
  "id": "resource-server-id",
  "name": "My API",
  "identifier": "https://my-api.example.com",
  "allow_online_access": true,
  ...
}
```

<h2 id="get-an-ort">
  Obtenir un ORT
</h2>

Pour obtenir un ORT, incluez le [scope](/docs/fr-ca/get-started/apis/scopes) `online_access` dans votre requête d’autorisation à l’aide du [flux de code d’autorisation](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow) ou du [flux de code d’autorisation avec PKCE](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce).

```bash theme={null}
https://<YOUR_DOMAIN>/authorize \
    audience=<YOUR_API_AUDIENCE> \
    scope=openid profile online_access \
    response_type=code \
    client_id=<YOUR_CLIENT_ID> \
    redirect_uri=<https://YOUR_APP/callback> \
    state=<OPAQUE_VALUE>
```

Une fois l’utilisateur authentifié, échangez le code d’autorisation contre des jetons :

```bash theme={null}
curl --request POST \
  --url 'https://<YOUR_DOMAIN>/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=authorization_code \
  --data 'client_id=<YOUR_CLIENT_ID>' \
  --data 'code=<YOUR_AUTHORIZATION_CODE>' \
  --data 'redirect_uri=<https://YOUR_APP/callback>' \
  --data 'code_verifier=<YOUR_CODE_VERIFIER>'
```

La réponse du jeton comprend l’ORT :

```json theme={null}
{
  "access_token": "eyJ...",
  "id_token": "eyJ...",
  "refresh_token": "ORT...",
  "token_type": "Bearer",
  "expires_in": 86400
}
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les ORT sont préfixés par `ORT` afin de les distinguer des jetons d’actualisation. Toutefois, vous devez considérer ce jeton comme opaque et ne pas vous fier à sa structure interne.
</Callout>

<h2 id="use-an-ort">
  Utiliser un ORT
</h2>

Échangez l’ORT contre un nouveau [jeton d’accès](/docs/fr-ca/secure/tokens/access-tokens) lorsque le jeton d’accès actuel expire ou est sur le point d’expirer :

```bash theme={null}
curl --request POST \
  --url 'https://<YOUR_DOMAIN>/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=refresh_token \
  --data 'client_id=<YOUR_CLIENT_ID>' \
  --data 'refresh_token=<YOUR_ONLINE_REFRESH_TOKEN>'
```

La réponse contient un nouveau jeton d’accès.
Si votre requête comprend la portée `openid`, la réponse contient un nouveau [ID token](/docs/fr-ca/secure/tokens/id-tokens):

```json theme={null}
{
  "access_token": "eyJ...",
  "id_token": "eyJ...",
  "token_type": "Bearer",
  "expires_in": 86400
}
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 n’émet pas de nouveau `refresh_token` et, comme les ORT ne font pas l’objet d’une rotation, vous continuez d’utiliser le même ORT pour les échanges suivants.
</Callout>

<h3 id="session-extension-behavior">
  Comportement de la prolongation de session
</h3>

Chaque échange de jeton réussi :

* **Réinitialise le délai d’inactivité de la session :** Le délai d’inactivité est rétabli à sa durée complète.
* **Ne prolonge pas la durée de vie absolue :** L’expiration absolue de la session demeure inchangée.
* **Maintient le SSO :** D’autres applications peuvent obtenir des jetons grâce au SSO tant que la session est active.

<h2 id="revoke-an-ort">
  Révoquer un ORT
</h2>

Lorsque vous révoquez un ORT, c’est toute la session Auth0 qui prend fin, et non seulement le jeton. Cela invalide tous les ORT liés à cette session et met fin au SSO pour l’utilisateur.

```bash theme={null}
curl --request POST \
  --url 'https://<YOUR_DOMAIN>/oauth/revoke' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'client_id=<YOUR_CLIENT_ID>' \
  --data 'token=<YOUR_ONLINE_REFRESH_TOKEN>'
```

<h2 id="use-orts-with-actions">
  Utiliser les ORT avec Actions
</h2>

Vous pouvez utiliser les ORT avec Auth0 [Actions](/docs/fr-ca/customize/actions/actions-overview) et le [déclencheur post-login](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger).

Avec Actions, vous pouvez :

* Utiliser l’objet `event.refresh_token` pour déterminer si le jeton est un ORT.
* Accéder à des données propres à la session au moyen de l’objet `event.session` afin de prendre des décisions en fonction de l’état actuel de la session

```javascript theme={null}
exports.onExecutePostLogin = async (event, api) => {
  // Vérifier si le jeton est un jeton d'actualisation en ligne (ORT)
  
  if (event.refresh_token?.access == 'online') {
    // Le jeton est un ORT, vous pouvez ensuite référencer event.session et api.session
    console.log('Exchanging Online Refresh Token bound to Session ID: ', event.session?.id);
    // Récupérer les métadonnées de session et les ajouter aux jetons
    // En supposant que les métadonnées de session ont été stockées au préalable
    const importantInformation = event.session?.metadata?.importantInformation;
    api.accessToken.setCustomClaim('info', importantInformation);
    api.idToken.setCustomClaim('info', importantInformation);
  }
};
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 révoque toute la session de l’utilisateur, et non pas seulement le jeton, lorsque la méthode `api.refreshToken.revoke()` est utilisée avec un ORT.
</Callout>

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

* [Online Refresh Tokens](/docs/fr-ca/secure/tokens/refresh-tokens/online-refresh-tokens/online-refresh-tokens)
* [Refresh Token Rotation](/docs/fr-ca/secure/tokens/refresh-tokens/refresh-token-rotation)
* [Obtenir des jetons d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens/get-refresh-tokens)
* [Utiliser des jetons d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens/use-refresh-tokens)
* [Cycle de vie de la session](/docs/fr-ca/manage-users/sessions/session-lifecycle)
* [Configurer l’authentification silencieuse](/docs/fr-ca/authenticate/login/configure-silent-authentication)
* [Bonnes pratiques pour les jetons](/docs/fr-ca/secure/tokens/token-best-practices)
