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

# Échange de jetons personnalisé

> L’échange de jetons personnalisé permet aux applications d’échanger leurs jetons existants contre des jetons Auth0.

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

L’échange de jetons personnalisé permet aux applications d’échanger leurs jetons existants contre des jetons Auth0 lors d’un appel au point de terminaison `/oauth/token`, comme défini dans la [RFC 8693](https://datatracker.ietf.org/doc/html/rfc8693). Voici quelques cas d’utilisation courants de l’échange de jetons personnalisé :

* Obtenir des jetons Auth0 pour une autre <Tooltip tip="Audience : identifiant unique de l’audience d’un jeton émis. Nommée aud dans un jeton, sa valeur contient l’ID d’une application (ID client) pour un ID Token ou d’une API (identifiant d’API) pour un Jeton d’accès." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=audience">audience</Tooltip>
* Intégrer un <Tooltip tip="fournisseur d’identité (IdP) : service qui stocke et gère les identités numériques." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=identity+provider">fournisseur d’identité</Tooltip> externe
* Migrer vers Auth0
* Autorisation déléguée : un principal (comme un service, un agent d’IA ou un agent de soutien) agit pour le compte d’un utilisateur

Pour en savoir plus, consultez [Exemples de cas d’utilisation et échantillons de code](/fr-CA/docs/authenticate/custom-token-exchange/cte-example-use-cases).

Chaque demande d’échange de jetons personnalisé correspond à un [profil d’échange de jetons personnalisé](/fr-CA/docs/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile), régi par une [Action](/fr-CA/docs/customize/actions), qui vous permet de :

* Écrire du code personnalisé pour décoder et valider les `subject_tokens` transmis au point de terminaison `/oauth/token`
* Autoriser l’accès et définir l’utilisateur qui poursuivra la transaction.

Vous pouvez [configurer plusieurs profils d’échange de jetons personnalisé](/fr-CA/docs/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile) pour une application. Une fois que le serveur d’autorisation Auth0 a validé la demande d’échange de jetons personnalisé et établi qu’elle correspond à un profil d’échange de jetons personnalisé existant, le [déclencheur d’échange de jetons personnalisé](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/custom-token-exchange-trigger) exécute l’unique Action associée à ce profil. L’application peut ensuite tirer parti de l’échange de jetons personnalisé pour authentifier l’utilisateur et obtenir des jetons d’accès, d’identité et d’actualisation Auth0 pour celui-ci.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  L’échange de jetons personnalisé vous offre plus de souplesse pour définir l’utilisateur associé à la transaction, en contrepartie de la responsabilité supplémentaire de valider de façon sécuritaire le jeton de sujet correspondant qui identifie cet utilisateur.

  Gardez à l’esprit que les jetons de sujet et d’acteur utilisés avec l’échange de jetons personnalisé peuvent avoir n’importe quel format ou type de jeton, pourvu que votre code Action puisse les interpréter. **Vous devez mettre en œuvre une validation rigoureuse des jetons que vous recevez et acceptez.** Sinon, vous vous exposez à différents vecteurs d’attaque, comme l’usurpation ou les attaques par rejeu, ce qui pourrait permettre à des acteurs malveillants de s’authentifier avec l’ID utilisateur d’une autre personne ou d’agir en son nom sans autorisation.

  Pour en savoir plus sur les différentes options de validation sécuritaire de vos jetons de sujet, consultez et appliquez les recommandations incluses dans [Exemples de cas d’utilisation et échantillons de code](/fr-CA/docs/authenticate/custom-token-exchange/cte-example-use-cases). Veillez aussi à tenir compte des fonctionnalités de [protection contre les attaques](/fr-CA/docs/authenticate/custom-token-exchange/cte-attack-protection) et à les appliquer.
</Callout>

<div id="tenant-logs">
  ## Journaux du locataire
</div>

Chaque transaction échange de jetons personnalisé génère un événement dans les journaux du locataire :

* Transactions réussies : journaux `secte`
* Transactions échouées : journaux `fecte`

Lorsqu’un acteur est défini à l’aide de `setActor()`, la propriété `actor` (contenant `sub` et tout `actor` imbriqué) est incluse dans les entrées de journal `secte` à des fins d’audit.

Utilisez les journaux du locataire pour vous aider à résoudre les problèmes rencontrés lors de votre échange de jetons.

<div id="limitations">
  ## Limites
</div>

L’échange de jetons personnalisé ne prend pas en charge les éléments suivants :

* Les méthodes de l’API MFA `api.authentication.challengeWith()` et `api.authentication.EnrollWith()`
* Les connexions de base de données personnalisées avec le mode d’importation `ON` ne sont pas prises en charge pour les opérations `setUserByConnection()`
* Les applications tierces non conformes à OIDC
* L’API cible doit avoir l’option **Allow Skipping User Consent** activée, puisque le consentement ne peut pas être recueilli dans un flux non interactif.
