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

# Obtenir un jeton

> Échangez un jeton d’identité existant contre un jeton Auth0 dans le cadre de l’octroi Custom Token Exchange.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## Point de terminaison
</div>

`POST /oauth/token`

L’échange de jetons personnalisé (CTE) fournit un mécanisme permettant aux applications d’échanger des jetons d’identité existants contre des jetons Auth0 en appelant le point de terminaison `/oauth/token`, conformément aux spécifications de la [RFC 8693](https://datatracker.ietf.org/doc/html/rfc8693). Cette fonctionnalité est particulièrement utile pour répondre à des besoins d’intégration avancés, par exemple pour échanger des jetons Auth0 existants afin d’accéder à une autre audience au nom du même utilisateur, faciliter l’intégration de fournisseurs d’identité externes ou permettre une migration fluide des utilisateurs vers la plateforme Auth0. Le processus d’échange peut être entièrement contrôlé, puisque les développeurs peuvent en définir les détails à l’aide de leur logique personnalisée exécutée dans une Action Auth0 dédiée au cas d’utilisation concerné.

<Note>
  Custom Token Exchange est actuellement offert en Accès anticipé. En utilisant cette fonctionnalité, vous acceptez les conditions applicables de l’essai gratuit prévues dans le [Contrat-cadre d’abonnement d’Okta](https://www.okta.com/legal/). Il vous incombe de valider en toute sécurité le `subject_token` de l’utilisateur. Consultez le [guide d’utilisation](https://auth0.com/docs/authenticate/custom-token-exchange) pour en savoir plus.
</Note>

<div id="remarks">
  ### Remarques
</div>

* Les scopes accordés à l’application peuvent différer des scopes demandés. Dans ce cas, un paramètre `scope` sera inclus dans la réponse JSON. Les scopes sont filtrés comme expliqué dans [Politiques d’accès aux API pour les applications](https://auth0.com/docs/get-started/apis/api-access-policies-for-applications)

* Le `subject_token_type` doit correspondre à un profil de Custom Token Exchange existant et à une [Action](https://auth0.com/docs/customize/actions) associée.

* Pour les applications non confidentielles qui ne peuvent pas protéger le Secret client (par exemple, les applications natives), le point de terminaison permet de ne pas fournir de Secret client, mais l’application elle-même doit avoir la propriété `tokenEndpointAuthMethod` définie sur `none`. Vous pouvez le faire soit dans l’interface utilisateur (**Auth0 Dashboard > Applications > Paramètres de l’application**), soit à l’aide de la Management API.

* Vous devez [activer Custom Token Exchange pour votre application](https://auth0.com//docs/authenticate/custom-token-exchange/configure-custom-token-exchange#enable-custom-token-exchange-for-your-application). Pour en savoir plus, consultez la [documentation sur Custom Token Exchange](https://auth0.com/docs/authenticate/custom-token-exchange).

* `actor_token` et `actor_token_type` doivent soit être tous deux présents, soit être tous deux absents. Si un seul est fourni, une erreur `400` avec le code `invalid_request` est renvoyée.

* Lorsque `actor_token` est présent, aucun Jeton d’actualisation n’est émis. Le scope `offline_access` est exclu de la réponse.

* MFA n’est pas compatible avec les transactions dans lesquelles un acteur est défini au moyen de `setActor()`. Si MFA est requis et que l’Action Custom Token Exchange définit un acteur, la requête renvoie une erreur `400` : `MFA is not supported using actor_token with the requested token exchange profile.`

* Lorsque l’Action appelle `setActor()`, les jetons d’accès et les ID tokens émis incluent une revendication `act` représentant la [chaîne de délégation](/fr-CA/docs/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange#the-act-claim). La revendication `act` est également incluse dans la réponse userinfo.

<div id="headers">
  ## En-têtes
</div>

<ParamField header="DPoP" type="string">
  Une preuve DPoP pour la requête. Ce paramètre est facultatif et n’est requis que si votre application utilise Demonstrating Proof-of-Possession.
</ParamField>

<ParamField header="auth0-forwarded-for" type="string">
  L’adresse IP de l’utilisateur final, sous forme de chaîne de caractères. Définissez ce paramètre si vous souhaitez que la protection Suspicious IP Throttling fonctionne dans les scénarios côté serveur.
</ParamField>

<div id="body-parameters">
  ## Paramètres du corps
</div>

<ParamField body="grant_type" type="string" required>
  Indique le flux que vous utilisez. Pour Custom Token Exchange, utilisez `urn:ietf:params:oauth:grant-type:token-exchange`.

  Valeurs autorisées : `urn:ietf:params:oauth:grant-type:token-exchange`
</ParamField>

<ParamField body="subject_token_type" type="string" required>
  Le type du jeton du sujet. Pour Custom Token Exchange, il peut s’agir de n’importe quel URI relevant d’un espace qui vous appartient, comme `http://acme.com/legacy-token` ou `urn:acme:legacy-token`. Les espaces de noms suivants sont réservés et ne peuvent pas être utilisés : `http://auth0.com`, `https://auth0.com`, `http://okta.com`, `https://okta.com`, `urn:ietf`, `urn:auth0`, `urn:okta`.
</ParamField>

<ParamField body="subject_token" type="string" required>
  Le jeton du sujet, que votre Action doit valider et utiliser pour identifier l’utilisateur.
</ParamField>

<ParamField body="client_id" type="string" required>
  L’ID client de votre application. Comme pour les autres types d’octroi, vous pouvez aussi transmettre l’ID client dans l’en-tête Authorization à l’aide de HTTP Basic Auth.
</ParamField>

<ParamField body="client_secret" type="string">
  (Facultatif) Le Secret client de votre application. Comme pour les autres types d’octroi, vous pouvez aussi transmettre le secret client dans l’en-tête Authorization à l’aide de HTTP Basic Auth. D’autres options sont aussi offertes, comme l’explique la [documentation de référence de l’Authentication API d’Auth0](https://auth0.com/docs/api/authentication#authentication-methods). Comme Custom Token Exchange peut être utilisé par des applications publiques, consultez [Attack Protection](https://auth0.com/docs/authenticate/custom-token-exchange/cte-attack-protection) pour mettre en place des mesures de sécurité supplémentaires.
</ParamField>

<ParamField body="audience" type="string">
  (Facultatif) L’identifiant unique de l’API cible à laquelle vous voulez accéder. L’audience par défaut du locataire sera utilisée si ce paramètre n’est pas fourni, comme configuré dans [Paramètres du locataire](https://auth0.com/docs/get-started/tenant-settings).
</ParamField>

<ParamField body="resource" type="string">
  (Facultatif) L’identifiant de l’API cible (serveur de ressources) à laquelle vous voulez accéder. Il doit correspondre à un identifiant d’API enregistré dans votre locataire Auth0. Il est utilisé comme solution de rechange à `audience` lorsque le [profil de compatibilité du paramètre Resource](https://auth0.com/docs/get-started/tenant-settings#settings-advanced) du locataire est défini sur `compatibility`.
</ParamField>

<ParamField body="scope" type="string">
  (Facultatif) Le paramètre OAuth2 `scope`.
</ParamField>

<ParamField body="organization" type="string">
  (Facultatif) L’organisation ou l’identifiant auquel vous voulez associer la requête. Vous pouvez aussi préciser un nom d’organisation si [Utiliser des noms d’organisation dans l’Authentication API](https://auth0.com/docs/manage-users/organizations/configure-organizations/use-org-name-authentication-api) est activé.
</ParamField>

<ParamField body="actor_token" type="string">
  (Facultatif) Un jeton qui identifie l’acteur effectuant une délégation au nom de l’utilisateur sujet. Il doit être fourni avec `actor_token_type`. Lorsqu’il est présent, des Jetons d’actualisation ne seront pas émis.
</ParamField>

<ParamField body="actor_token_type" type="string">
  (Facultatif) Le type du jeton de l’acteur. Il doit être fourni avec `actor_token`. Pour les ID Tokens Auth0, utilisez `urn:ietf:params:oauth:token-type:id_token` afin d’activer la validation automatique côté serveur (signature, expiration, émetteur, recherche de l’utilisateur). Pour les autres valeurs, respectez les mêmes restrictions d’espace de noms que pour `subject_token_type`.
</ParamField>

<div id="response-schema">
  ## Schéma de réponse
</div>

<ResponseSchema>
  <ResponseField name="access_token" type="string">
    Le jeton d’accès.
  </ResponseField>

  <ResponseField name="refresh_token" type="string">
    Le jeton d’actualisation.
  </ResponseField>

  <ResponseField name="id_token" type="string">
    Le jeton d’identité.
  </ResponseField>

  <ResponseField name="token_type" type="string">
    Le type de jeton.
  </ResponseField>

  <ResponseField name="issued_token_type" type="string">
    Le type de jeton émis.
  </ResponseField>

  <ResponseField name="expires_in" type="integer">
    La durée de validité du jeton d’accès, en secondes.
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## Messages de réponse
</div>

| Statut | Description     |
| ------ | --------------- |
| 200    | Réponse réussie |
