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

> Apprenez à configurer Token Vault.

# Configurer Token Vault

Une fois qu’un utilisateur s’est authentifié auprès d’un [fournisseur externe pris en charge](/docs/fr-CA/secure/tokens/token-vault#supported-external-providers) et a autorisé la connexion, votre application peut accéder à Token Vault pour échanger un jeton Auth0 contre le jeton d’accès du fournisseur externe.

Pour configurer Token Vault, vous devez :

1. [Configurer les comptes connectés pour Token Vault](/docs/fr-CA/secure/tokens/token-vault/configure-token-vault#configure-connected-accounts-for-token-vault) pour une connexion sociale ou d’entreprise prise en charge.
2. [Configurer votre application](#configure-application) avec le type d’octroi (grant type) Token Vault.
3. Configurer l’échange de jetons pour votre application :
   * [Échange de jeton d’actualisation](#configure-refresh-token-exchange)
   * [Échange de jeton d’accès](#configure-access-token-exchange)

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Si vous avez précédemment défini votre stratégie AMF (MFA) sur **Always** dans Auth0 Dashboard, vous devez la définir sur **Never** pour récupérer un jeton d’accès à partir de Token Vault. Sinon, vous recevrez une erreur. Pour en savoir plus sur les différentes stratégies d’AMF (MFA), consultez [Enable MFA in the Auth0 Dashboard](/docs/fr-CA/secure/multi-factor-authentication/enable-mfa#enable-mfa-in-the-auth0-dashboard).

  Si vous devez déclencher des défis d’AMF (MFA) pour des flux interactifs, activez **Customize MFA Factors using Actions** lors de la [configuration de l’AMF (MFA) pour votre tenant](/docs/fr-CA/secure/multi-factor-authentication/customize-mfa/customize-mfa-selection-universal-login#prepare-your-tenant). Vous pouvez ensuite utiliser une Action pour déclencher un défi d’AMF (MFA) en fonction de la propriété `event.transaction.protocol`. Pour en savoir plus, consultez [Customize MFA selection for Universal Login](/docs/fr-CA/secure/multi-factor-authentication/customize-mfa/customize-mfa-selection-universal-login).
</Callout>

<div id="configure-connected-accounts-for-token-vault">
  ## Configurer les comptes connectés pour Token Vault
</div>

Connected Accounts for Token Vault gère un profil d’utilisateur Auth0 unifié associé à plusieurs comptes externes. Votre application récupère ensuite les identifiants stockés dans Token Vault pour interagir avec des API externes pour le compte de l’utilisateur.

Vous pouvez configurer Connected Accounts pour les connexions sociales et d’entreprise prises en charge. Pour en savoir plus, consultez [Configurer les comptes connectés](/docs/fr-CA/secure/tokens/token-vault/connected-accounts-for-token-vault#configure-connected-accounts).

<div id="configure-application">
  ## Configurer l’application
</div>

Configurez votre application avec le grant type Token Vault à l’aide de l’<Tooltip tip="Management API : un produit qui permet aux clients d’effectuer des tâches administratives." cta="Afficher le glossaire" href="/docs/fr-CA/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> ou de la <Tooltip tip="Auth0 Dashboard : le produit principal d’Auth0 pour configurer vos services." cta="Afficher le glossaire" href="/docs/fr-CA/glossary?term=Management+API">Management API</Tooltip>.

Seuls certains types de clients peuvent utiliser le grant type Token Vault :

1. Le client doit être un client de première partie, c.-à-d. que la propriété `is_first_party` a la valeur `true`.
2. Le client doit être un client confidentiel avec un mécanisme d’authentification valide, c.-à-d. que la propriété `token_endpoint_auth_method` ne doit pas être définie sur `none`.
3. Le client doit être conforme à OIDC, c.-à-d. que `oidc_conformant` doit avoir la valeur `true`.

<Tabs>
  <Tab title="Auth0 Dashboard">
    1) Accédez à **Applications > Applications**.
    2) Sélectionnez l’application que vous voulez configurer.
    3) Sous **Advanced Settings > Grant Types**, sélectionnez le grant type **Token Vault**.
    4) Sélectionnez **Save Changes**.

    <Frame>
      <img src="https://mintcdn.com/generaltranslationinc/78hG6sVmUVcUqk59/docs/images/token-vault/configure_token_vault_grant_type.png?fit=max&auto=format&n=78hG6sVmUVcUqk59&q=85&s=e8d8c46d75c9143defa52e8510610c9e" alt="" width="1368" height="680" data-path="docs/images/token-vault/configure_token_vault_grant_type.png" />
    </Frame>
  </Tab>

  <Tab title="Management API">
    Pour activer Token Vault pour une application, effectuez un appel `PATCH` vers l’endpoint [Update a Client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) afin d’ajouter le grant type `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token` à l’objet JSON du client :

    ```bash lines theme={null}
    curl --location --request PATCH 'https://{yourDomain}/api/v2/clients/{clientId}' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_ACCESS_TOKEN>' \
      --data '{
        "grant_types": [
          "authorization_code",
          "refresh_token",
          "urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token"
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="configure-token-exchange">
  ## Configurer l’échange de jetons
</div>

Pour appeler les API d’un fournisseur externe, votre application doit échanger un jeton Auth0 valide contre un jeton d’accès du fournisseur externe auprès de Token Vault. Le type de jeton Auth0 utilisé pour l’échange dépend de votre type de client et de votre cas d’utilisation. Pour en savoir plus, consultez la page [Échanges de jetons pris en charge](/docs/fr-CA/secure/tokens/token-vault#supported-token-exchanges).

<div id="configure-refresh-token-exchange">
  ### Configurer l’échange de jeton d’actualisation
</div>

Pour utiliser [l’échange de jeton d’actualisation avec Token Vault](/docs/fr-CA/secure/tokens/token-vault/refresh-token-exchange-with-token-vault), vous devez configurer votre application avec les types d’autorisation (grant types) suivants :

* Authorization Code : permet à votre application d’effectuer la connexion initiale de l’utilisateur, au cours de laquelle votre application échange un code d’autorisation temporaire contre un jeton d’accès Auth0, un jeton d’actualisation et un jeton ID.
* Refresh token : permet à votre application d’utiliser un jeton d’actualisation Auth0 de longue durée pour demander un nouveau jeton d’accès Auth0 sans exiger que l’utilisateur se connecte de nouveau.
* Token Vault : permet à votre application d’échanger un jeton d’actualisation Auth0 contre un jeton d’accès d’un fournisseur externe stocké dans Token Vault.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Pour configurer votre application pour l’échange de jeton d’actualisation :

    * Accédez à **Applications > Applications**.
    * Sélectionnez l’application que vous voulez configurer.
    * Sous **Advanced Settings > Grant Types**, sélectionnez les types d’autorisation **Refresh Token**, **Authorization Code** et **Token Vault**.
    * Sélectionnez **Save Changes**.
  </Tab>

  <Tab title="Management API">
    Pour configurer votre application pour l’échange de jeton d’actualisation, effectuez un appel `PATCH` au point de terminaison [Update a Client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) pour ajouter les types d’autorisation `refresh_token`, `authorization_code,` et `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token` à l’objet JSON du client :

    ```bash lines theme={null}
    curl --location --request PATCH 'https://{yourDomain}/api/v2/clients/{clientId}' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_ACCESS_TOKEN>' \
      --data '{
        "grant_types": [
          "authorization_code",
          "refresh_token",
          "urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token"
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="configure-access-token-exchange">
  ### Configurer l’échange de jeton d’accès
</div>

Pour utiliser [l’échange de jeton d’accès avec Token Vault](/docs/fr-CA/secure/tokens/token-vault/access-token-exchange-with-token-vault), vous devez :

* [Configurer votre SPA](#configure-your-spa) avec le type de flux d’autorisation `authorization_code`.
* [Créer une API backend](#create-backend-api) pour laquelle la SPA peut demander un jeton d’accès Auth0 en la définissant comme audience.
* [Créer un Client API personnalisé](#create-custom-api-client) qui est lié à l’API backend avec le type de flux Token Vault activé.

<div id="configure-your-spa">
  #### Configurer votre SPA
</div>

Configurez votre SPA avec le type de flux d’autorisation `authorization_code`. Cela permet à votre SPA de demander un jeton d’accès Auth0 avec une portée limitée à l’API backend à partir du serveur d’autorisation Auth0.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Pour configurer votre SPA avec le type de flux d’autorisation `authorization_code` :

    * Accédez à **Applications > Applications**.
    * Sélectionnez l’application que vous voulez configurer.
    * Sous **Advanced Settings > Grant Types**, sélectionnez le type **Authorization Code**.
    * Sélectionnez **Save Changes**.
  </Tab>

  <Tab title="Management API">
    Pour configurer votre SPA, effectuez un appel `PATCH` vers le point de terminaison [Update a Client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) pour ajouter le type de flux d’autorisation `authorization_code` à l’objet JSON du client :

    ```bash lines theme={null}
    curl --request PATCH 'https://{yourDomain}/api/v2/clients/{clientId}' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
      --data '{
        "grant_types": [
          "authorization_code"
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="create-backend-api">
  #### Créer une API back-end
</div>

Créez une API back-end avec un identifiant unique et les scopes souhaités qui effectuera l’échange de jetons d’accès avec le serveur d’autorisation Auth0.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Pour créer une API back-end dans l’Auth0 Dashboard :

    * Accédez à **Applications > APIs**, puis cliquez sur **Create API**.
    * Pour créer votre API, suivez les instructions dans [Register APIs](/docs/fr-CA/get-started/auth0-overview/set-up-apis). **Remarque :** Une fois que vous avez défini un identifiant pour votre API, vous ne pouvez plus le modifier.
    * Cliquez sur **Create**.
    * Une fois votre API créée, vous devez ajouter des scopes pour l’API. Accédez à l’onglet **Permissions**. Sous **Add a Permission**, ajoutez vos scopes.
  </Tab>

  <Tab title="Management API">
    Pour créer une API back-end à l’aide de la Management API, effectuez une requête `POST` vers le point de terminaison `/resource-servers` :

    ```bash lines  theme={null}
    curl --request POST 'https://{yourDomain}/api/v2/resource-servers' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
      --data '{
        "name": "My API Resource Server",
        "identifier": "https://my-api.example.com",
        "scopes": [
          {
            "value": "read:calendar",
            "description": "Lire les événements du calendrier"
          },
          {
            "value": "write:calendar",
            "description": "Écrire des événements dans le calendrier"
          }
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="create-custom-api-client">
  #### Créer un client d'API personnalisé
</div>

Pour l'échange de jetons d'accès, vous devez créer un client d'API personnalisé lié à l'API dorsale. L'application monopage pourra demander un jeton d'accès à l'API dorsale en la spécifiant comme audience dans la demande d'autorisation au serveur d'autorisation Auth0. Le client d'API personnalisé possède le même identifiant que votre API dorsale et a le type d'octroi Token Vault activé.

Lorsque l'API dorsale effectue l'échange de jetons d'accès, elle s'authentifie en transmettant les informations d'identification du client d'API personnalisé au serveur d'autorisation Auth0, prouvant qu'elle est la même entité qui a été enregistrée dans le tableau de bord Auth0.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Pour créer un client d'API personnalisé dans le tableau de bord Auth0 :

    * Accédez à **Applications > APIs** et sélectionnez votre API dorsale.
    * Sélectionnez **Add Application** et saisissez un nom d'application.
    * Cliquez sur **Add**. Une fois l'application créée, cliquez sur **Configure Application** et faites défiler jusqu'à **Application Properties**. Le **Application Type** est un client d'API personnalisé.
    * Sous **Advanced Settings > Grant Types**, le type d'octroi **Token Vault** devrait déjà être activé pour le client d'API personnalisé.

    <Frame>
      <img src="https://mintcdn.com/generaltranslationinc/78hG6sVmUVcUqk59/docs/images/token-vault/create_custom_api_client.png?fit=max&auto=format&n=78hG6sVmUVcUqk59&q=85&s=250fb6d0221d5c374675dcc7eb3e8ad7" alt="" width="1392" height="870" data-path="docs/images/token-vault/create_custom_api_client.png" />
    </Frame>
  </Tab>

  <Tab title="Management API">
    L'exemple de code suivant crée un client d'API personnalisé avec le même identifiant que votre API dorsale et ajoute le type d'octroi Token Vault :

    ```bash lines theme={null}
    curl --request POST 'https://{yourDomain}/api/v2/clients' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
      --data '{
        "name": "Custom API Client",
        "app_type": "resource_server",
        "resource_server_identifier": "https://my-api.example.com",
        "grant_types": [
          "urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token"
        ]
      }'
    ```

    <table class="table">
      <thead>
        <tr>
          <th><strong>Paramètre</strong></th>
          <th><strong>Description</strong></th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>name</code></td>
          <td>Nom de votre client d'API personnalisé.</td>
        </tr>

        <tr>
          <td><code>app\_type</code></td>
          <td>Le type d'application de votre client d'API personnalisé. Pour enregistrer le client en tant que serveur de ressources, définissez-le à <code>resource\_server</code>.</td>
        </tr>

        <tr>
          <td><code>resource\_server\_identifier</code></td>
          <td>L'identifiant unique de votre client d'API personnalisé. Définissez-le à l'audience de votre API dorsale, c'est-à-dire `https://my-api.example.com.`</td>
        </tr>

        <tr>
          <td><code>grant\_types</code></td>
          <td>Les types d'octroi activés pour votre client d'API personnalisé. Définissez-le au type d'octroi Token Vault : `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token`.</td>
        </tr>
      </tbody>
    </table>
  </Tab>
</Tabs>

Une fois que vous avez créé le client d'API personnalisé, l'utilisateur sera redirigé vers celui-ci au lieu de l'application monopage après la connexion.
