- Sécurisation des opérations sensibles exécutées à partir de vos propres services, telles que l’approbation des virements bancaires, l’accès à l’historique des opérations et la modification des identifiants d’accès.
- Sécurisation des opérations sensibles demandées à des services tiers, telles que l’approbation des paiements numériques et l’autorisation d’un accès unique pour la vérification d’un compte.
Vous devez configurer l’autorisation transactionnelle pour chaque API. Une fois activée, elle s’applique aux permissions et aux
authorization_details.types de cette API.Prérequis
- Définissez
transactional-authorization-with-mfacommeconsent_policy. - Enregistrez les
authorization_details.typesque vous souhaitez utiliser.
Flux de bout en bout
- Redirection sécurisée de l’utilisateur vers Auth0 avec les détails de la transaction. Dans cette étape, il faut éviter de révéler des informations sensibles sur le frontend (par exemple, le navigateur).
- Appliquer une politique dynamique après l’authentification de l’utilisateur. En utilisant Actions, vous pouvez décider dynamiquement des étapes suivantes en fonction des détails de la transaction et d’autres informations que vous pouvez obtenir de sources telles que des API externes. Pour en savoir plus, consultez Appliquer une politique dynamique.
- Mettre au défi l’utilisateur avec un deuxième facteur d’authentification et afficher les détails de la transaction pour que l’utilisateur l’approuve explicitement. Cette étape dépend du facteur d’authentification que vous avez choisi d’appliquer à l’aide des Actions.
- Obtenez le jeton d’accès et procédez à l’opération sensible. Votre API valide les détails de la transaction approuvée associés au jeton d’accès.

Communiquer les détails de la transaction et rediriger vers Auth0
/authorize, PAR envoie directement des paramètres de votre système dorsal à un point de terminaison spécial /par à l’aide d’une requête POST. Pour savoir comment le configurer, consultez Configurer les demandes d’autorisation poussées.
Dans le corps de la requête PAR, les détails de la transaction sont envoyés dans le cadre de l’objet JSON authorization_details :
authorization_details afin de déterminer les facteurs d’authentification à utiliser en fonction de la transaction. Pour en savoir plus sur authorization_details et sur la manière de l’utiliser avec PAR, consultez Flux de code d’autorisation avec des demandes d’autorisation enrichies.
Si vous souhaitez répondre aux exigences de conformité en matière de sécurité avancée de FAPI 1, vous devez également utiliser la cryptographie à clé publique pour authentifier le système dorsal par rapport au point de terminaison /par ou /token. Cette méthode est plus sûre que l’envoi d’un secret client. Auth0 propose les méthodes d’authentification par cryptographie à clé publique suivantes :
Après avoir reçu une réponse positive à votre requête PAR, redirigez l’utilisateur vers le point de terminaison /authorize de votre locataire Auth0. Ajoutez le paramètre request_uri reçu dans la réponse PAR et le client_id comme seuls paramètres de requête, cachant ainsi efficacement toute information sensible au navigateur.
Appliquer une politique dynamique
/authorize de votre locataire Auth0, Auth0 tente d’authentifier l’utilisateur. Dans notre exemple d’approbation d’un virement bancaire, Auth0 a déjà authentifié l’utilisateur pour accéder à votre application Web. Cependant, lorsqu’un tiers redirige l’utilisateur, par exemple pour un paiement numérique, Auth0 présente un écran de connexion à l’utilisateur. Pour en savoir plus sur le flux d’authentification, consultez la documentation Authentifier.
Une fois que Auth0 a authentifié avec succès l’utilisateur, Auth0 déclenche des Actions post-connexion, qui exposent les détails de la transaction concernant l’utilisateur, l’application, le(s) facteur(s) d’authentification utilisé(s), et plus encore dans l’objet événement post-login. Dans l’objet événement post-connexion, la propriété event.transaction.requested_authorization_details contient des détails sur la demande d’autorisation reçue à l’étape précédente.
Utilisez l’objet événement post-connexion pour décider de la manière dont vous souhaitez poursuivre la transaction. Par exemple, vous pouvez envoyer les détails de la transaction à un moteur de risque externe et, après avoir évalué le niveau de risque, déterminer s’il convient de demander une authentification renforcée par SMS, comme l’illustre l’exemple de code suivant.
event.transaction.linking_id, qui contient un identifiant universel unique (UUID) de la transaction. Plus tard, lorsque Auth0 demande à l’utilisateur d’approuver la transaction, linking_id fournit une référence pour Liaison dynamique. Vous pouvez également ajouter le linking_id au jeton d’accès en tant que demande personnalisée pour associer les détails d’autorisation d’une transaction spécifique aux appels API de votre côté. Cela facilite la traçabilité, car Auth0 inclut le linking_id dans les journaux du locataire.
Mettre au défi l’utilisateur pour obtenir l’approbation des détails de la transaction
Notifications poussées

linking_id sur un serveur ou un point de terminaison externe et mettez-les à disposition pendant quelques minutes seulement. Ensuite, invitez l’utilisateur à envoyer une notification poussée, comme illustré dans l’exemple de code suivant. N’oubliez pas d’interdire la possibilité de revenir à la saisie manuelle d’un mot de passe à usage unique (OTP) en ajoutant l’option otpFallback: false.
vous pouvez appeler
api.multifactor.enable('any', { allowRememberBrowser: false }) avant api.authentication.challengeWith pour supprimer l’option permettant de se souvenir de cet appareil et obliger l’utilisateur à valider le défi poussé pour toutes les transactions.event.transaction.linking_id, que la trousse SDK Gardien Auth0 transmet à l’application mobile. Pendant la transaction, le nom de la propriété est abrégé à txlnkid. Avec le linking_id, l’application mobile peut maintenant récupérer les détails de la transaction et les montrer à l’utilisateur. Une fois que l’utilisateur approuve ou refuse l’opération, l’application mobile peut autoriser ou rejeter le défi MFA respectivement. La transaction passe à la phase Compléter l’opération.
Remarque : Pour vérifier l’identité de l’utilisateur qui ouvre la notification poussée, vous pouvez ajouter l’authentification biométrique à l’application mobile. Pour en savoir plus, consultez Configurer WebAuthn avec la biométrie de l’appareil pour MFA.
SMS, courriel ou WebAuthn

vous pouvez appeler
api.multifactor.enable('any', { allowRememberBrowser: false }) avant api.authentication.challengeWith pour supprimer l’option permettant de se souvenir de cet appareil et obliger l’utilisateur à valider le défi poussé pour toutes les transactions.Pas de défi
Compléter l’opération
authorization_details que vous avez transmis à l’origine. L’exemple de code suivant montre le contenu d’un jeton d’accès déchiffré :
authorization_details du jeton d’accès pour vérifier les détails de la transaction, tels que le montant, l’expéditeur, la destination, etc. Une fois vérifié, le transfert d’argent s’exécute avec succès et vous devriez voir apparaître l’écran d’approbation.
Si la transaction est rejetée à une étape quelconque, le navigateur de l’utilisateur affiche un code d’erreur access_denied.