> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/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.

> [!WARNING]
>
> **La fonctionnalité Online Refresh Tokens est en .**

## Configurer les ORT

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

### Configurer à l’aide du Dashboard

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

   ![Dashboard Applications API Settings Allow Online Access](https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/refresh-tokens/allow-online-access.png)

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](https://auth0.com/docs/fr-ca/manage-users/sessions/configure-session-lifetime.md).

### Configurer à l’aide de la Management API

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

**Auth0 CLI**

Vous utilisez Auth0 CLI? Si ce n’est pas déjà fait, [configurez et authentifiez votre session CLI](https://auth0.com/docs/fr-ca/deploy-monitor/auth0-cli.md) avant d’exécuter cette commande.

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

**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}'
```

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

**Auth0 CLI**

```bash theme={null}
auth0 api get "resource-servers/<YOUR_RESOURCE_SERVER_ID>"
```

**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>'
```

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,
  ...
}
```

## Obtenir un ORT

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

```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
}
```

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.

## Utiliser un ORT

Échangez l’ORT contre un nouveau [jeton d’accès](https://auth0.com/docs/fr-ca/secure/tokens/access-tokens.md) 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](https://auth0.com/docs/fr-ca/secure/tokens/id-tokens.md):

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

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.

### Comportement de la prolongation de session

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.

## Révoquer un ORT

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>'
```

## Utiliser les ORT avec Actions

Vous pouvez utiliser les ORT avec Auth0 [Actions](https://auth0.com/docs/fr-ca/customize/actions/actions-overview.md) et le [déclencheur post-login](https://auth0.com/docs/fr-ca/customize/actions/explore-triggers/post-login.md).

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);
  }
};
```

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.

## En savoir plus

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