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

> Échangez des jetons de sécurité existants contre des jetons Auth0 d’accès, d’ID et d’actualisation à l’aide d’une Action personnalisée et d’un profil d’échange de jetons.

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" />

L’Échange de jetons personnalisé permet aux applications d’échanger leurs jetons existants contre des jetons Auth0 lors d’une requête au point de terminaison `/oauth/token`, comme défini dans la [RFC 8693](https://datatracker.ietf.org/doc/html/rfc8693). Parmi les cas d’utilisation courants de l’Échange de jetons personnalisé, on retrouve les suivants :

* Obtenir des jetons Auth0 pour une autre <Tooltip tip="Audience : identifiant unique de l’audience d’un jeton émis. Appelée aud dans un jeton, sa valeur contient l’ID d’une application (Client ID) pour un ID Token ou d’une API (API Identifier) pour un jeton d’accès." cta="Voir le glossaire" href="/docs/fr-ca/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="/docs/fr-ca/glossary?term=identity+provider">fournisseur d’identité</Tooltip> externe
* Migrer vers Auth0
* Autorisation déléguée : un principal (comme un service, un agent IA ou un agent de soutien) agit au nom d’un utilisateur

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

<Tip>
  Si vous n’avez pas d’exigences de validation de jetons personnalisée et que vous devez seulement propager le contexte de délégation entre vos propres services, utilisez plutôt l’[Échange de jetons On-Behalf-Of](/docs/fr-ca/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange). Il n’exécute pas d’Action personnalisée par requête et prend en charge un débit considérablement plus élevé. Utilisez l’Échange de jetons personnalisé lorsque vous devez valider des subject tokens ou jetons d’acteur dans un format personnalisé, intégrer un fournisseur d’identité externe ou que vous avez autrement besoin d’un contrôle complet sur la logique d’échange.
</Tip>

Chaque requête d’Échange de jetons personnalisé correspond à un [profil d’Échange de jetons personnalisé](/docs/fr-ca/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile) régi par une [Action](/docs/fr-ca/customize/actions), où vous pouvez :

* É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 associé à la transaction.

Vous pouvez [configurer plusieurs profils d’Échange de jetons personnalisé](/docs/fr-ca/authenticate/custom-token-exchange/configure-custom-token-exchange#create-custom-token-exchange-profile) pour une application. Une fois que l’Auth0 Authorization Server a validé que la requête d’Échange de jetons personnalisé est valide et correspond à un profil d’Échange de jetons personnalisé existant, le [déclencheur d’Échange de jetons personnalisé](/docs/fr-ca/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 pour celui-ci des jetons Auth0 d’accès, d’ID et d’actualisation.

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

  Gardez à l’esprit que les subject tokens et jetons d’acteur utilisés avec l’Échange de jetons personnalisé peuvent prendre n’importe quel format ou type de jeton, tant que le code de votre Action peut les interpréter. **Vous devez mettre en œuvre une validation robuste des jetons que vous recevez et acceptez.** Si vous ne le faites pas, 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 de quelqu’un d’autre ou d’agir en son nom de manière non autorisée.

  Pour en savoir plus sur les différentes options permettant de mettre en œuvre une validation sécuritaire de vos subject tokens, consultez et appliquez les recommandations incluses dans [Exemples de cas d’utilisation et échantillons de code](/docs/fr-ca/authenticate/custom-token-exchange/cte-example-use-cases). Assurez-vous également de tenir compte des fonctionnalités de [Protection contre les attaques](/docs/fr-ca/authenticate/custom-token-exchange/cte-attack-protection) et de les appliquer.
</Callout>

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

Chaque transaction d’Échange de jetons personnalisé génère un log d’événement du tenant :

* Transactions réussies : logs `secte`
* Transactions Failed : logs `fecte`

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

Utilisez les logs du tenant pour vous aider à résoudre les problèmes rencontrés lors de votre échange de jeton.

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

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

* les méthodes de la MFA API `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 clients tiers et non conformes à OIDC
* l’API cible doit avoir l’option **Autoriser l’omission du consentement de l’utilisateur** activée, puisqu’il n’est pas possible de recueillir le consentement dans un flux non interactif.
