Auth0 recommande d’utiliser, dans la mesure du possible, la connexion fédérée standard offerte par défaut. En vous permettant de définir l’utilisateur pour la transaction, l’Échange de jeton personnalisé vous offre plus de flexibilité, mais vous confie également la responsabilité supplémentaire de valider et de traiter la transaction de façon sécuritaire.
Cas d’utilisation
Cas d’utilisation : Migration transparente vers Auth0

- L’application mobile envoie une request à Auth0 pour échanger le jeton d’actualisation hérité, en le définissant comme subject token.
- L’Action du profil Échange de jeton personnalisé correspondant s’exécute. Elle valide le jeton d’actualisation auprès de l’IdP hérité et obtient l’ID utilisateur externe à partir du profil utilisateur. Elle applique ensuite la politique d’autorisation requise, puis définit l’utilisateur.
- Auth0 répond avec un Auth0 jeton d’accès, un ID token et un jeton d’actualisation.
- L’application mobile peut maintenant utiliser les Customer APIs au moyen de jetons Auth0, sans que l’utilisateur ait à s’authentifier de nouveau.
- Nous ne voulons pas créer l’utilisateur.
- Nous ne voulons pas mettre à jour le profil utilisateur.
Cas d’utilisation : Réutiliser un fournisseur d’authentification externe

- L’application monopage obtient le ID token de l’IdP externe une fois que l’utilisateur s’authentifie.
- Elle demande ensuite l’échange du ID token en le définissant comme subject token.
- L’Action du profil d’Échange de jeton personnalisé correspondant s’exécute. Elle valide le ID token et récupère le user ID ainsi que d’autres attributs du profil à partir du jeton. Elle applique ensuite la politique d’autorisation requise, puis définit l’utilisateur.
- Auth0 répond avec un jeton d’accès Auth0, un ID token et un jeton d’actualisation.
- Le code JavaScript exécuté dans la SPA peut maintenant utiliser les Customer APIs avec des jetons Auth0, sans que l’utilisateur ait à se réauthentifier.
- Nous utilisons le user ID de l’IdP externe pour définir l’utilisateur dans la connexion correspondante.
- Nous voulons créer l’utilisateur s’il n’existe pas encore.
- Nous ne voulons pas remplacer le profil utilisateur si un ensemble d’attributs plus complet est obtenu au moyen d’une connexion fédérée, dans le cas où l’utilisateur existe déjà.
- Nous ne voulons pas vérifier les courriels lorsque des utilisateurs sont créés.
Cas d’utilisation : Obtenir des jetons Auth0 pour une autre audience

- L’application envoie la requête à l’API A avec le jeton d’accès initial.
- Le service backend de l’API A valide le jeton d’accès et demande un échange en le définissant comme subject token pour obtenir un nouveau jeton d’accès permettant de consommer l’API B.
- L’Action correspondante du profil Échange de jeton personnalisé s’exécute. Elle valide le jeton d’accès et récupère l’ID utilisateur Auth0 à partir du jeton. Elle applique ensuite la politique d’autorisation requise, puis définit l’utilisateur.
- Auth0 renvoie un jeton d’accès Auth0 permettant de consommer l’audience de l’API B.
- Le service backend de l’API A appelle l’API B à l’aide du nouveau jeton d’accès, qui est toujours associé au même utilisateur.
- Nous utilisons l’ID utilisateur Auth0 pour définir l’utilisateur; il n’est donc pas nécessaire de le définir dans la portée d’une quelconque connection.
- Nous ne voulons pas créer ni mettre à jour l’utilisateur.
Cas d’utilisation : Effectuer une vérification MFA pendant l’échange de jeton personnalisé
api.multifactor.enable() pour déclencher une demande de vérification MFA. Cette fonction est décrite dans la documentation de l’API Post Login.
mfa_required, qui renvoie un jeton MFA :
mfa_token renvoyé, l’application peut ensuite appeler l’API MFA pour lancer une demande de vérification et vérifier un facteur :
D’abord, récupérez la liste des authentificateurs :
mfa_token et oob_code (s’ils sont renvoyés) pour finaliser le processus de vérification à l’aide du point de terminaison de jeton et obtenir des jetons :
Cas d’utilisation : agent de soutien agissant au nom d’un utilisateur final par API

actor_token dans la requête, et un JWT signé identifiant l’utilisateur final est envoyé comme subject_token. Lorsque actor_token_type est défini sur urn:ietf:params:oauth:token-type:id_token, Auth0 valide automatiquement le token (signature, expiration, issuer) et remplit event.transaction.actor_token_user avec le profil de l’agent. Cela élimine le besoin d’écrire du code de validation personnalisé pour l’actor token.
L’utilisation d’un ID token Auth0 comme
actor_token n’est pas obligatoire. Lorsque actor_token_type correspond à une valeur personnalisée, l’Action doit valider l’actor token au moyen de code personnalisé, comme pour la validation des subject tokens. Le remplissage automatique de event.transaction.actor_token_user s’applique uniquement aux ID tokens Auth0.- L’outil de soutien authentifie l’agent avec Auth0 et obtient l’ID token de l’agent.
- L’outil de soutien envoie une requête à
/oauth/tokend’Auth0 au moyen d’une requête d’Échange de jeton personnalisé, incluant un JWT signé avec l’identifiant de l’utilisateur final commesubject_tokenet l’ID token de l’agent commeactor_token. - L’Action Échange de jeton personnalisé valide le subject token, vérifie que l’acteur a le droit d’agir au nom de l’utilisateur final et appelle
api.authentication.setActor(). - Auth0 émet des jetons avec le claim
actidentifiant l’agent de soutien. - L’agent de soutien utilise l’API au nom de l’utilisateur final. Les API peuvent inspecter le claim
actpour appliquer des politiques d’autorisation propres à l’accès délégué, par exemple en restreignant les opérations d’écriture ou en consignant l’activité à des fins d’audit.
act :
- Mettez en œuvre la logique d’autorisation dans votre Action d’échange de jeton personnalisé afin de vérifier que l’acteur est autorisé à accéder au compte d’utilisateur visé. Par exemple, vous pouvez faire en sorte que seuls certains acteurs soient autorisés à obtenir un accès délégué, ou vérifier que l’utilisateur cible a un ticket de soutien actif afin d’éviter tout accès arbitraire à un compte d’utilisateur.
- Validez les scopes demandés afin de vous assurer que seul l’ensemble minimal de scopes requis pour l’autorisation déléguée est émis. Vous pouvez aussi vous assurer que certaines opérations sensibles ne puissent jamais être effectuées dans le contexte d’une autorisation déléguée.
-
Assurez-vous que vos API utilisent le contexte de délégation dans la claim
actdu jeton d’accès. Vous devriez conserver dans vos API des journaux d’audit des actions effectuées par un acteur délégué et vous assurer de pouvoir clairement déterminer quel acteur a effectué des opérations au nom de l’utilisateur. -
À des fins d’audit, vous pouvez utiliser les détails de l’acteur dans les journaux du tenant Auth0. Les transactions Échange de jeton personnalisé réussies (événements de journal
secte) incluent la propriétéactoravecsubet toute informationactorimbriquée.
Auth0 n’informe pas l’utilisateur final lorsqu’un jeton d’autorisation déléguée est émis en son nom. Si votre cas d’utilisation exige qu’un utilisateur soit avisé ou donne son consentement explicite avant qu’un accès délégué soit accordé, envisagez d’utiliser Client Initiated Backchannel Authentication (CIBA) pour envoyer une demande de consentement à l’appareil de l’utilisateur final avant d’effectuer l’échange de jeton. Pour des besoins de notification plus simples, vous pouvez mettre en œuvre une logique de notification dans votre Action d’échange de jeton personnalisé, une Action Post-Login ou vos services en aval.
Cas d’utilisation : un agent de soutien accède à une application Web au nom d’un utilisateur final

- L’outil de soutien authentifie l’agent auprès d’Auth0 et obtient le jeton d’ID de l’agent.
- L’outil de soutien envoie une requête au point de terminaison
/oauth/tokend’Auth0 à l’aide d’une requête échange de jeton personnalisé, en définissantaudiencesururn:YOUR_AUTH0_TENANT_DOMAIN:session_transfer, avec un JWT signé identifiant l’utilisateur final commesubject_tokenet le jeton d’ID de l’agent commeactor_token. - L’Action d’échange de jeton personnalisé associée valide le jeton du sujet, autorise la délégation et appelle
api.authentication.setActor()etapi.authentication.setUserByConnection()afin de sélectionner la connexion acceptée par l’application cible. L’appel àsetActor()est requis lors de la demande d’un jeton de transfert de session; si vous l’omettez, une erreur400est renvoyée. - Auth0 émet un jeton de transfert de session (
issued_token_type: urn:auth0:params:oauth:token-type:session_transfer_token) au lieu d’un jeton d’accès. - L’outil de soutien redirige le navigateur de l’agent vers l’application Web de GearUp en transmettant le jeton de transfert de session comme paramètre de requête dans son
initiate_login_uri. - L’application Web de GearUp transmet le jeton de transfert de session dans sa propre requête au point de terminaison
/authorized’Auth0, qui valide le jeton et établit une session éphémère à durée limitée pour l’utilisateur final, l’agent étant enregistré comme acteur à des fins d’audit. Consultez Implement Session Delegation pour obtenir tous les détails sur la requête et la réponse.
Votre application Web doit explicitement accepter les sessions déléguées, et plusieurs comportements de session diffèrent de ceux d’une connexion standard (durée de session, jetons d’actualisation, MFA, etc.). Consultez Session Delegation pour configurer votre application Web et comprendre ces comportements, ces limites et la façon d’auditer les sessions déléguées.
audience demandé afin de distinguer une requête de délégation de session d’une simple requête d’accès à l’API et appliquons une politique d’autorisation distincte à chacune. Nous définissons ensuite l’acteur et l’utilisateur. Auth0 décide d’émettre un jeton d’accès ou un jeton de transfert de session en fonction de l’élément audience demandé, et non de la logique de l’Action.
Considérations importantes concernant la délégation de session
- Détectez les requêtes de délégation de session à l’aide de l’audience
session_transferet appliquez une politique d’autorisation propre à ce cas. - L’accessibilité de l’application cible dépend de la connexion précise configurée par votre Action.
- Pour configurer la connexion, l’application qui appelle l’Échange de jetons personnalisé doit avoir accès aux mêmes connexions que vos applications cibles.
- Utilisez des domaines Auth0 distincts pour les applications initiatrice et cible afin d’éviter qu’une session existante sur un domaine partagé bloque la session déléguée.
- Les agents doivent se déconnecter entre les sessions déléguées de différents utilisateurs.
Exemples de code
Il vous revient de vous assurer que les jetons de sujet sont protégés par un algorithme robuste et des clés/secrets offrant une entropie suffisante.
Valider les JWTs signés avec des clés asymétriques
- Utilisez les méthodes
api.cache ()d’Actions pour éviter d’avoir à récupérer les clés de signature pour chaque transaction. - Respectez les pratiques exemplaires de la RFC8725
- Utilisez les algorithmes RS*, PS*, ES* ou Ed25519
- N’utilisez pas et n’acceptez pas l’algorithme none
- Utilisez RSA avec une taille minimale de 2048 bits.
Valider les JWT signés avec des clés symétriques
- Utilisez les Secrets des Actions pour stocker vos secrets symétriques en toute sécurité.
- Suivez les bonnes pratiques de la RFC8725
- Utilisez des algorithmes sécuritaires comme HS256, ainsi que des secrets aléatoires à entropie élevée (par exemple, d’au moins 256 bits)