> ## 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 le Custom Token Exchange en associant une Action à un profil de jeton personnalisé.

# Configurer le Custom Token Exchange

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "Bêta",
    "ea": "Accès anticipé"
  };
  const stageText = stageTextMap[stage] || "une étape du cycle de publication";
  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 {linkify(`${plans} forfaits`, "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="Custom Token Exchange (CTE)" stage="ea" plans="B2C Professional, B2B Professional, and Enterprise" terms="true" />

Pour configurer le Custom Token Exchange pour votre application, vous devez :

* [Remplir les conditions préalables](#prerequisites)
* [Activer le Custom Token Exchange pour votre application](#enable-custom-token-exchange-for-your-application)
* [Configurer](#configure-custom-token-exchange-profile) et [gérer](#manage-custom-token-exchange-profile) un profil d’échange de jeton personnalisé

<div id="prerequisites">
  ## Prérequis
</div>

Avant de configurer le Custom Token Exchange, assurez-vous que votre application répond aux prérequis suivants :

* Est une application propriétaire
* Est conforme à OIDC

Pour configurer votre application, accédez à **[Applications > Advanced Settings > OAuth](https://auth0.com/docs/get-started/applications/application-settings#oauth)** dans Auth0 Dashboard.

<div id="enable-custom-token-exchange-for-your-application">
  ## Activer Custom Token Exchange pour votre application
</div>

Pour activer Custom Token Exchange, [créez une nouvelle application](/fr-CA/docs/get-started/auth0-overview/create-applications) ou mettez à jour une application existante dans l’Auth0 Dashboard ou au moyen de la Management API. Vous pouvez créer plusieurs applications pour utiliser Custom Token Exchange.

Lorsque vous créez une nouvelle application :

1. Par défaut, Custom Token Exchange est désactivé. Pour activer Custom Token Exchange, utilisez la Management API pour effectuer un appel `POST` à [Create a Client](https://auth0.com/docs/api/management/v2/clients/post-clients) ou un appel `PATCH` à [Update a Client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id). Définissez l’attribut `allow_any_profile_of_type` sous `token_exchange` à `["custom_authentication"]` :

```json lines theme={null}
{
  "token_exchange": {
    "allow_any_profile_of_type": ["custom_authentication"]
  }
}
```

2. Activez la connexion que vous voulez utiliser avec Custom Token Exchange pour l’application.
3. Assurez-vous que votre application est définie comme [de première partie](/fr-CA/docs/get-started/applications/first-party-and-third-party-applications) et qu’elle est configurée pour être conforme à OIDC dans **[Dashboard > Applications > Advanced Settings > OAuth](/fr-CA/docs/get-started/applications/application-settings#oauth)**.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les bases de données personnalisées avec le mode d’importation `ON` ne sont prises en charge que pour les opérations `setUserById()`.
</Callout>

Une fois l’application créée, notez le `client_id` et le `client_secret` pour les utiliser plus tard lors de l’appel du point de terminaison `/oauth/token`.

<div id="configure-custom-token-exchange-profile">
  ## Configurer le profil d’échange de jeton personnalisé
</div>

Chaque profil d’échange de jeton personnalisé établit une correspondance directe entre un `subject_token_type` et une Action, qui contient la logique de code propre à un cas d’utilisation précis.

Les requêtes de Custom Token Exchange envoyées au point de terminaison `/oauth/token` avec une valeur `subject_token_type` précise sont associées au profil d’échange de jeton personnalisé correspondant, puis acheminées vers l’Action associée pour traitement.

Pour créer un profil d’échange de jeton personnalisé, vous devez :

1. [Créer une Action pour le profil](#create-action-for-the-profile)
2. [Créer le profil d’échange de jeton personnalisé](#create-custom-token-exchange-profile)
3. [Gérer le profil d’échange de jeton personnalisé](#manage-custom-token-exchange-profile)

<div id="create-action-for-the-profile">
  ### Créer une Action pour le profil
</div>

Utilisez les objets Event et API de Custom Token Exchange pour écrire une Action qui :

* Décode et valide le `subject_token` selon le `subject_token_type`. Vous obtiendrez ainsi des renseignements sur l’utilisateur pour la transaction.
* Applique toute stratégie d’autorisation que vous devez appliquer à la transaction.

Une fois que vous avez la certitude que la transaction peut se poursuivre, définissez l’utilisateur. Auth0 émettra alors des jetons d’accès, d’ID et d’actualisation pour cet utilisateur comme mécanisme d’authentification.

Pour voir des exemples d’Actions de Custom Token Exchange, consultez [Example Use Cases and Code Samples](/fr-CA/docs/authenticate/custom-token-exchange/cte-example-use-cases).

Une fois votre Action rédigée, ajoutez-la et déployez-la dans Auth0 Dashboard.

1. Accédez à **Actions > Library**.
2. Sélectionnez **Create Action > Build from Scratch**.
3. Dans la boîte de dialogue **Create Action**, saisissez un nom et sélectionnez le déclencheur **Custom Token Exchange** dans le menu déroulant.

<Frame>
  <img src="https://mintcdn.com/translations/eVsQcTnbClN-oB7d/docs/images/cdy7uua7fh8z/22vz9dsCFj5Ruot7U0HIVx/1c3dc4b562334dab9d6ac415028ea76e/Screenshot_2025-02-05_at_8.48.34_AM.png?fit=max&auto=format&n=eVsQcTnbClN-oB7d&q=85&s=f6f64e6e8208a914cf5f7d73e4a47ada" alt="" width="400" height="440" data-path="docs/images/cdy7uua7fh8z/22vz9dsCFj5Ruot7U0HIVx/1c3dc4b562334dab9d6ac415028ea76e/Screenshot_2025-02-05_at_8.48.34_AM.png" />
</Frame>

4. Sélectionnez **Create**.
5. **Deploy** l’Action.

<Frame>
  <img src="https://mintcdn.com/translations/MV7tE-x71x8RWRES/docs/images/cdy7uua7fh8z/56NZA69Gmzha167xfgRD0W/302e59276815d2e2644ab2da3b9b5f1f/Screenshot_2025-02-03_at_10.29.17_AM.png?fit=max&auto=format&n=MV7tE-x71x8RWRES&q=85&s=7b29ab5bb0bb3ce0075837f48592ab6b" alt="" width="1244" height="574" data-path="docs/images/cdy7uua7fh8z/56NZA69Gmzha167xfgRD0W/302e59276815d2e2644ab2da3b9b5f1f/Screenshot_2025-02-03_at_10.29.17_AM.png" />
</Frame>

Après avoir déployé l’Action, copiez l’ID d’Action qu’Auth0 lui a attribué. Vous devez encore ajouter votre logique personnalisée à l’Action. Commencez par récupérer l’ID d’Action pour créer le profil d’échange de jeton personnalisé.

6. Pour obtenir l’ID d’Action dans Auth0 Dashboard, accédez à l’URL de la fenêtre du navigateur. L’ID d’Action devrait correspondre à la dernière partie de l’URL, comme illustré dans l’image suivante :

<Frame>
  <img src="https://mintcdn.com/translations/eVsQcTnbClN-oB7d/docs/images/cdy7uua7fh8z/1Xx4UbgZR0FIuLC1KVvhKG/bde4469d770c2ff8d37c19895a0c8e66/Screenshot_2025-02-03_at_10.31.18_AM.png?fit=max&auto=format&n=eVsQcTnbClN-oB7d&q=85&s=da53b4a079e0f2338b54db38647b3c24" alt="" width="1244" height="558" data-path="docs/images/cdy7uua7fh8z/1Xx4UbgZR0FIuLC1KVvhKG/bde4469d770c2ff8d37c19895a0c8e66/Screenshot_2025-02-03_at_10.31.18_AM.png" />
</Frame>

Vous pouvez également obtenir l’ID d’Action au moyen de la Management API. Commencez par obtenir un jeton de la Management API pour appeler l’API. Ensuite, effectuez la requête `GET` suivante vers le point de terminaison `/actions` :

```bash lines theme={null}
curl --location 'https://{yourDomain}/api/v2/actions/actions?actionName={yourActionName}' \
--header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
```

Vous devriez recevoir l’id de l’Action dans le corps de la réponse, sous `actions[0].id.` Vous avez besoin de l’id de l’Action pour créer le profil d’échange de jeton personnalisé.

<div id="create-custom-token-exchange-profile">
  ### Créer un profil d’échange de jeton personnalisé
</div>

Pour créer un profil d’échange de jeton personnalisé, utilisez la Management API pour envoyer une requête `POST` au point de terminaison `/token-exchange-profiles` avec les paramètres suivants :

```bash lines theme={null}
curl --location 'https://{yourDomain}/api/v2/token-exchange-profiles' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
--data '{
    "name": "<YOUR_PROFILE_NAME>",
    "subject_token_type": "<YOUR_UNIQUE_PROFILE_TOKEN_TYPE_URI>",
    "action_id": "<YOUR_ACTION_ID>",
    "type": "custom_authentication"
}'
```

| Paramètre            | Description                                                                                                                                                                                                                                                                                                                                                 |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `subject_token_type` | URI unique du type de jeton de profil commençant par `https://` ou `urn`<br /><br />Les espaces de noms suivants sont réservés et ne peuvent pas être utilisés :<br /><br /><ul><li>`http://auth0.com`</li><li>`https://auth0.com`</li><li>`http://okta.com`</li><li>`https://okta.com`</li><li>`urn:ietf`</li><li>`urn:auth0`</li><li>`urn:okta`</li></ul> |
| `action_id`          | ID de l’Action associée au profil de jeton personnalisé.                                                                                                                                                                                                                                                                                                    |
| `type`               | Doit être défini sur `custom_authentication`.                                                                                                                                                                                                                                                                                                               |

Si vous avez créé avec succès un profil d’échange de jeton personnalisé, vous devriez recevoir une réponse semblable à celle-ci :

```json lines theme={null}
{
  "id":"tep_9xqewuejpa2RTltf",
  "name":"<YOUR_PROFILE_NAME>",
  "type":"custom_authentication",
  "subject_token_type":"<YOUR_UNIQUE_PROFILE_TOKEN_TYPE_URI>",
  "action_id":"<YOUR_ACTION_ID>",
  "created_at":"2025-01-30T13:19:00.616Z",
  "updated_at":"2025-01-30T13:19:00.616Z"
}
```

<div id="manage-custom-token-exchange-profile">
  ### Gérer le profil de Custom Token Exchange
</div>

Pour gérer votre profil de Custom Token Exchange, utilisez la Management API pour envoyer des requêtes au point de terminaison `/token-exchange-profiles`.

Pour obtenir tous vos profils de Custom Token Exchange, envoyez la requête `GET` suivante au point de terminaison `/token-exchange-profiles`. Le point de terminaison `/token-exchange-profiles` prend en charge la pagination avec point de contrôle si vous avez plusieurs profils.

```bash lines theme={null}
curl --location 'https://{yourDomain}/api/v2/token-exchange-profiles' \
--header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
```

Pour mettre à jour le nom ou le `subject_token_type` d’un profil existant, envoyez la requête `PATCH` suivante au point de terminaison `/token-exchange-profiles`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Une fois l’Action créée, vous ne pouvez plus modifier l’ID de l’Action.
</Callout>

```bash lines theme={null}
curl --location --request PATCH 'https://{yourDomain}/api/v2/token-exchange-profiles/{yourProfileId}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
--data '{
    "name": "external-idp-migration",
    "subject_token_type": "urn:partner0:external-idp-migration"
}'
```

Pour supprimer un profil de Custom Token Exchange, envoyez la requête `DELETE` suivante au point de terminaison `/token-exchange-profiles` :

```bash lines theme={null}
curl --location --request DELETE 'https://{yourDomain}/api/v2/token-exchange-profiles/{yourProfileId}' \
--header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
--data ''
```
