- Permettre l’acceptation personnalisée de la politique de confidentialité, des conditions d’utilisation et de formulaires de divulgation des données.
- Recueillir de façon sécurisée, une seule fois, des données de profil supplémentaires requises.
- Permettre aux utilisateurs d’Active Directory à distance de changer leur mot de passe.
- Exiger des utilisateurs qu’ils effectuent une vérification supplémentaire lorsqu’ils se connectent à partir d’un emplacement inconnu.
- Recueillir plus d’informations sur vos utilisateurs que celles qu’ils ont fournies lors de leur inscription initiale.
Aperçu
- Une Action lance une redirection vers une URL.
- Le pipeline d’Actions est suspendu une fois l’exécution de cette Action terminée.
- L’utilisateur est redirigé vers l’URL avec un paramètre
state. - Une fois le flux externe terminé, le site externe redirige l’utilisateur vers un point de terminaison
/continueavec le paramètrestate. - Le pipeline d’Actions reprend à la même Action qui a déclenché la redirection.
Lancer une redirection
api.redirect.sendUserTo() comme suit :
https://my-app.exampleco.com. Autrement dit, les Actions associées aux déclencheurs post-login qui s’exécutent après l’Action appelant la redirection ne s’exécuteront pas tant que le flux d’authentification n’aura pas repris. Si vous connaissez Redirect Rules, sachez qu’il s’agit d’une différence importante entre Redirect Actions et Redirect Rules.
Contrairement à Redirect Rules, Redirect Actions suspend le pipeline Actions lorsqu’une redirection est déclenchée et reprend dans la même Action qui a déclenché la redirection lorsque le flux d’authentification est repris.
api.redirect.sendUserTo(). Auth0 transmet aussi un paramètre state dans cette URL. Par exemple :
https://my-app.exampleco.com/?state=abc123
Votre URL de redirection devra extraire le paramètre state et le renvoyer à Auth0 pour reprendre la transaction d’authentification. Le paramètre state est une valeur opaque utilisée pour prévenir les attaques de falsification de requête intersites (CSRF).
Reprendre le flux d’authentification
/continue et en incluant le paramètre state reçu dans l’URL. Si vous ne renvoyez pas la valeur d’origine de state au point de terminaison /continue, Auth0 perdra le contexte de la transaction de connexion et l’utilisateur ne pourra pas se connecter en raison d’une erreur invalid_request.
Par exemple :
https://{yourAuth0Domain}/continue?state=THE_ORIGINAL_STATE
Dans cet exemple, THE_ORIGINAL_STATE est la valeur qu’Auth0 a générée et envoyée à l’URL de redirection. Par exemple, si votre Action redirige vers https://my-app.exampleco.com/, Auth0 utiliserait une URL de redirection comme https://my-app.exampleco.com/?state=abc123, ce qui ferait de abc123 la valeur de THE_ORIGINAL_STATE. Pour reprendre la transaction d’authentification, vous redirigeriez vers :
https://{yourAuth0Domain}/continue?state=abc123
Lorsqu’un utilisateur est redirigé vers le point de terminaison /continue, le pipeline Actions reprend à la même Action qui a déclenché la redirection en appelant la fonction onContinuePostLogin. Pour que les redirections fonctionnent correctement, vous devez inclure une fonction ayant la signature suivante dans la même Action qui a déclenché la redirection :
Transmettre des données au site externe
api.redirect.encodeToken et api.redirect.sendUserTo :
session_token à l’URL utilisée pour la redirection (en plus du paramètre state qu’Auth0 ajoute automatiquement). Ce jeton contiendra les éléments suivants :
Assurez-vous que le jeton n’a pas été altéré
sub du jeton.
Transmettre des données à Auth0
/continue. Dans certaines situations, vous voudrez peut-être transmettre des données à Auth0 pour influer sur l’authentification ou le de cet utilisateur (par exemple, si vous mettez en œuvre des vérifications CAPTCHA ou une personnalisée).
Utilisez les métadonnées d’application dans la mesure du possible
event.user.app_metadata. Cette approche évite de transmettre des renseignements sensibles à Auth0 par le canal frontal.
Faites preuve de discernement lorsque vous stockez des données dans le profil utilisateur Auth0
Envoyer des données sur le canal frontal
Transmettre des informations à l’Action
- La signature est valide.
- Le jeton n’est pas expiré.
- La claim
statedans le jeton correspond au paramètrestateutilisé dans le cadre de la redirection.
Pour éviter les attaques par rejeu, le jeton doit être renvoyé à Auth0 au moyen d’une requête POST vers le point de terminaison
/continue. L’option tokenParameterName dans le code vous permet de préciser le nom du champ qui contient votre jeton.
Méthodes d’authentification personnalisées
event.authentication.methods contiendra une entrée pour la méthode personnalisée pendant toute la durée de la session du navigateur de l’utilisateur. Chaque entrée de ce tableau comporte un horodatage indiquant à quel moment la méthode d’authentification a été consignée.
Une action personnalisée peut déclencher une redirection si la méthode personnalisée requise ne figure pas dans le tableau event.authentication.methods ou si l’entrée est trop ancienne.
Vous pouvez utiliser api.redirect.sendUserTo() pour rediriger l’utilisateur vers une page qui implémente une méthode d’authentification personnalisée. Vous pouvez utiliser api.authentication.recordMethod() dans le gestionnaire exports.onContinuePostLogin pour enregistrer la méthode terminée dans la session de l’utilisateur.
L’enregistrement stocké dans le tableau event.authentication.methods aura une propriété name correspondant à l’URL choisie dans api.authentication.recordMethod(). L’URL consignée ici vous permet de parcourir les méthodes d’authentification terminées de la transaction en cours afin de déterminer si votre méthode personnalisée a déjà été exécutée.
Votre flux de travail peut exiger que la méthode personnalisée soit répétée périodiquement pendant la durée de la session d’un utilisateur. Par exemple, des scénarios MFA personnalisés peuvent nécessiter une nouvelle vérification de l’utilisateur après un certain délai.
L’exemple ci-dessous compare l’horodatage d’un enregistrement existant pour déterminer à quel moment relancer la méthode personnalisée :
api.authentication.recordMethod() est uniquement disponible dans le gestionnaire exports.onContinuePostLogin. Cela permet d’éviter d’éventuelles attaques liées à la connexion en enregistrant la méthode personnalisée une fois la redirection terminée.
Restrictions et limites
Point de terminaison Resource Owner
Flux où prompt=none
prompt=none est d’éviter toute situation où l’utilisateur devrait fournir une information, toute redirection entraînera une error=interaction_required.
Comme les Actions s’exécutent après la création d’une session d’authentification, vous ne pouvez pas utiliser prompt=none si vous avez une règle de redirection qui vise à bloquer l’accès aux jetons dans certaines conditions (par exemple, une MFA personnalisée, un CAPTCHA à la connexion, etc.).
Vous ne pouvez pas créer un flux de redirection qui bloque l’accès aux jetons et contourne la Redirect Action avec prompt=none, car après une tentative échouée, un utilisateur peut simplement envoyer une nouvelle requête avec prompt=none et obtenir des jetons, puisque sa session d’authentification a déjà été créée, même si les Actions ont échoué la première fois.
Jetons d’actualisation
prompt=none.
Chaque fois que api.redirect.sendUserTo() est appelé dans une Action, si prompt=none a été transmis, l’autorisation échoue avec error=interaction_required. Toutefois, comme la session de l’utilisateur est créée même si les Actions échouent, nous ne pouvons pas être certains qu’un utilisateur a réussi les vérifications liées à la redirection et, par conséquent, nous ne pouvons pas utiliser prompt=none comme moyen d’obtenir des jetons.
Dans ce cas précis, nous vous recommandons d’utiliser exclusivement des jetons d’actualisation, puisque vous pouvez vous assurer qu’un utilisateur a réussi les vérifications si celles-ci sont requises pour générer un jeton d’actualisation.