Point de terminaison
POST /oauth/token
L’Échange de jeton personnalisé (CTE) offre aux applications un mécanisme leur permettant 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. Cette fonctionnalité est particulièrement utile pour répondre à des besoins d’intégration avancés, par exemple échanger des jetons Auth0 existants pour 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 est entièrement contrôlable, 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é.
L’Échange de jeton personnalisé est actuellement offert en accès anticipé. En utilisant cette fonctionnalité, vous acceptez les conditions applicables de l’essai gratuit énoncées dans le Master Subscription Agreement d’Okta. Il vous incombe de valider de manière sécuritaire le
subject_token de l’utilisateur. Consultez le guide de l’utilisateur pour en savoir plus.Remarques
-
Les portées accordées à l’application peuvent différer des portées demandées. Dans ce cas, un paramètre
scopesera inclus dans la réponse JSON. Les portées sont filtrées comme expliqué dans Politiques d’accès aux API pour les applications. -
La MFA n’est pas compatible avec les transactions où un acteur est défini à l’aide de
setActor(). Dans ces cas, la requête renvoie une erreur400: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 jetons ID émis incluent une revendicationactqui représente la chaîne de délégation. La revendicationactest également incluse dans la réponseuserinfo. -
Pour demander un jeton de transfert de session plutôt qu’un jeton d’accès, définissez
audiencesururn:YOUR_AUTH0_TENANT_DOMAIN:session_transfer. L’appel àsetActor()est requis pour cette requête. Consultez Délégation de session pour savoir comment échanger le jeton obtenu afin d’établir une session au nom de l’utilisateur concerné. -
Pour inclure des revendications standard (comme
email) dans le ou les jetons émis, la portée correspondante (email) doit être incluse dans la requête, même si votre Action définit explicitement la revendication. Pour en savoir plus, consultez Portées OpenID Connect : revendications standard. -
L’échange de jeton personnalisé n’ajoute pas d’acteur agent. Même lorsque Agents as Principal est activé, la revendication
actest entièrement contrôlée par l’Action à l’aide desetActor(); Auth0 n’ajoute pas automatiquement de revendicationactd’agent pour cette autorisation.
En-têtes
string
Une preuve DPoP pour la requête. Ce champ est facultatif et n’est requis que si votre application utilise Demonstrating Proof-of-Possession.
string
L’adresse IP de l’utilisateur final sous forme de chaîne de caractères. Définissez ce champ si vous voulez que la protection Suspicious IP Throttling fonctionne dans des scénarios côté serveur.
Paramètres du corps
Le corps de la requête est au format
application/x-www-form-urlencoded.string
requis
Indique le flux que vous utilisez. Pour Échange de jeton personnalisé, utilisez
urn:ietf:params:oauth:grant-type:token-exchange.Valeurs autorisées : urn:ietf:params:oauth:grant-type:token-exchangestring
requis
Le type du subject token. Pour Échange de jeton personnalisé, il peut s’agir de n’importe quel URI dans votre propre espace de noms, par exemple
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.string
requis
Le subject token, que votre action doit valider et utiliser pour identifier l’utilisateur.
string
requis
Le Client ID de votre application. Comme pour les autres grant types, vous pouvez aussi transmettre le client ID dans l’en-tête Authorization à l’aide de l’authentification Basic HTTP.
string
(Facultatif) Le Client Secret de votre application. Comme pour les autres grant types, vous pouvez aussi transmettre le client secret dans l’en-tête Authorization à l’aide de l’authentification Basic HTTP. D’autres options sont également offertes, comme expliqué dans la documentation de référence de l’Auth0 Authentication API. Comme Échange de jeton personnalisé peut être utilisé par des Public applications, consultez Attack Protection pour mettre en place des mesures de sécurité supplémentaires.
string
(Facultatif) L’identifiant unique de l’API cible à laquelle vous voulez accéder. L’audience par défaut du tenant sera utilisée si ce paramètre n’est pas fourni, comme configuré dans Tenant Settings. Pour demander un jeton de transfert de session afin d’établir une session déléguée plutôt qu’un jeton d’accès, utilisez
urn:YOUR_AUTH0_TENANT_DOMAIN:session_transfer.string
(Facultatif) L’identifiant de l’API cible (resource server) à laquelle vous voulez accéder. Il doit correspondre à un API identifier enregistré dans votre Auth0 tenant. Utilisé comme solution de rechange à
audience lorsque le Resource Parameter Compatibility Profile du tenant est défini à compatibility.string
(Facultatif) Le paramètre portée d’OAuth2.
string
(Facultatif) L’organization ou l’identifiant auquel vous voulez associer la requête. Vous pouvez aussi préciser un organization name si Use Organization Names in Authentication API est activé.
string
(Facultatif) Un token qui identifie l’actor effectuant une délégation au nom de l’utilisateur subject. Doit être fourni avec
actor_token_type. S’il est présent, aucun jeton d’actualisation ne sera émis.string
(Facultatif) Le type de l’actor token. Doit être fourni avec
actor_token. Pour les jetons d’ID Auth0, utilisez urn:ietf:params:oauth:token-type:id_token pour une validation automatique côté serveur (signature, expiration, émetteur, recherche de l’utilisateur). Pour les autres valeurs, appliquez les mêmes restrictions d’espace de noms que pour subject_token_type.