> ## 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 l’échange de jetons personnalisé en associant une Action à un profil de jetons personnalisé.

# Configurer l’échange de jetons personnalisé

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="Échange de jetons personnalisé (CTE)" stage="ea" plans="B2C Professional, B2B Professional et Enterprise" terms="true" />

Pour configurer l’échange de jetons personnalisé pour votre application, vous devez :

* [Remplir les conditions préalables](#prerequisites)
* [Activer l’échange de jetons personnalisé 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 jetons personnalisé

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

Avant de configurer l’Échange de jetons personnalisé, assurez-vous que votre application remplit les prérequis suivants :

* Est un client de première partie
* Est conforme à OIDC

Pour configurer votre application, accédez à **[Applications > Paramètres avancés > OAuth](https://auth0.com/docs/get-started/applications/application-settings#oauth)** dans l’Auth0 Dashboard.

<div id="enable-custom-token-exchange-for-your-application">
  ## Activer l’échange de jetons personnalisé pour votre application
</div>

Pour activer l’échange de jetons personnalisé, [créez une nouvelle application](/docs/fr-ca/get-started/auth0-overview/create-applications) ou mettez à jour une application existante à l’aide de l’Auth0 Dashboard ou de la Management API. Vous pouvez créer plusieurs applications pour utiliser l’échange de jetons personnalisé.

Lorsque vous créez une nouvelle application :

1. Par défaut, l’échange de jetons personnalisé est désactivé. Pour activer l’échange de jetons personnalisé, utilisez la Management API pour effectuer une requête `POST` à [Créer un client](https://auth0.com/docs/api/management/v2/clients/post-clients) ou une requête `PATCH` à [Mettre à jour un 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` sur `["custom_authentication"]` :

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

2. Activez la connexion que vous souhaitez utiliser avec l’échange de jetons personnalisé pour l’application.
3. Assurez-vous que votre application est définie comme [First-Party](/docs/fr-ca/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](/docs/fr-ca/get-started/applications/application-settings#oauth)**.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les bases de données personnalisées dont le mode d’importation est réglé à `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 lorsque vous appellerez le point de terminaison `/oauth/token`.

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

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

Les requêtes échange de jetons personnalisé envoyées au endpoint `/oauth/token` avec une valeur `subject_token_type` précise seront associées au Custom Token Profile correspondant et acheminées vers l’Action associée pour traitement.

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

1. [Créer une Action pour le profil](#create-action-for-the-profile)
2. [Créer le profil d’échange de jetons personnalisé](#create-custom-token-exchange-profile)
3. [Gérer le profil d’échange de jetons 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 échange de jetons personnalisé 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 politique d’autorisation nécessaire à 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 dans le cadre de l’authentification de l’utilisateur.

Pour voir des exemples d’Actions de échange de jetons personnalisé, consultez [Exemples de cas d’utilisation et échantillons de code](/docs/fr-ca/authenticate/custom-token-exchange/cte-example-use-cases).

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

1. Accédez à **Actions > Library**.
2. Sélectionnez **Create Action > Build from Scratch**.
3. Dans la boîte de dialogue **Create Action**, entrez un nom et sélectionnez le Trigger **échange de jetons personnalisé** dans la liste déroulante.

<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’Action ID qu’Auth0 lui a attribué. Vous devez encore ajouter votre logique personnalisée à l’Action. Commencez par obtenir l’Action ID pour créer le profil d’échange de jetons personnalisé.

6. Pour obtenir l’Action ID dans l’Auth0 Dashboard, consultez l’URL dans la fenêtre du navigateur. L’Action ID devrait correspondre à la dernière partie de l’URL, comme le montre 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 aussi obtenir l’Action ID au moyen de la Management API. Commencez par obtenir un Management API Token pour appeler l’API. Ensuite, envoyez la requête `GET` suivante au endpoint `/actions` :

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

Vous devriez trouver l’Action ID dans le corps de la réponse, à `actions[0].id.` Vous aurez besoin de l’Action ID pour créer le Profil d’échange de jetons personnalisé.

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

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

```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 vous ne pouvez pas les utiliser :<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 d’échange de jetons personnalisé.                                                                                                                                                                                                                                                                                            |
| `type`               | Doit être défini sur `custom_authentication`.                                                                                                                                                                                                                                                                                                                  |

Si vous avez créé un profil d’échange de jetons personnalisé avec succès, vous devriez recevoir une réponse semblable à la suivante :

```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 d’échange de jetons personnalisé
</div>

Pour gérer votre profil d’échange de jetons personnalisé, utilisez la Management API pour envoyer des requêtes au point de terminaison `/token-exchange-profiles`.

Pour obtenir tous vos profils d’échange de jetons personnalisés, 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 par checkpoint 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, effectuez la requête `PATCH` suivante à l’endpoint `/token-exchange-profiles`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Une fois l’Action créée, vous ne pouvez pas modifier l’Action ID.
</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 d’échange de jetons personnalisé, effectuez 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 ''
```
