Valider les jetons d’ID pour la MFA
Lorsqu’un utilisateur se connecte, vous obtenez un jeton d’ID qui contient des informations pertinentes sur la session de l’utilisateur sous forme de demandes. La demande pertinente estamr
(référence des méthodes d’authentification), qui est un tableau JSON de chaînes indiquant la méthode d’authentification utilisée lors de la connexion. Elle doit être présente dans la charge utile du jeton d’ID et doit contenir la valeur mfa
.
Ses valeurs peuvent inclure l’une des valeurs de référence de méthode d’authentificationprédéfinies. Vu qu’elle peut contenir des demandes autres que mfa
, lors de la validation, vous devez à la fois vérifier son existence et examiner son contenu pour y trouver la valeur mfa
.
Si un utilisateur tente d’accéder à une page restreinte et que le jeton indique qu’il ne s’est pas authentifié par MFA, vous pouvez relancer l’authentification, que vous avez configurée pour déclencher la MFA à l’aide d’une action. Une fois que l’utilisateur fournit le deuxième facteur, un nouveau jeton d’ID contenant la demande amr
est généré et envoyé à l’application.
- Obtenir le jeton d’ID.
- Vérifier la signature du jeton qui est utilisée pour vérifier que l’expéditeur du jeton est bien celui qu’il prétend être et pour s’assurer que le message n’a pas été modifié en cours de route.
-
Valider les demandes suivantes :
Demande Description exp
Expiration du jeton iss
Émetteur de jetons aud
Destinataire prévu du jeton amr
Si amr
n’existe pas dans la charge utile ou ne contient pas la valeurmfa
, l’utilisateur ne s’est pas connecté avec la MFA. Siamr
existe dans la charge utile et contient la valeurmfa
, l’utilisateur s’est connecté avec la MFA.
Exceptions aux demandes AMR
La demandeamr
est requise, sauf dans les cas d’utilisation suivants :
- Dans les flux de connexion hébergés, la demande
amr
n’est injectée dans le jeton d’ID qu’après que l’utilisateur a réussi à relever un défi-réponse MFA. Lorsque l’application emploie l’authentification silencieuse ou les jetons d’actualisation pour les jetons d’ID nouvellement émis, la demandeamr
ne sera pas nécessaire, car l’utilisateur a déjà terminé la connexion par MFA. - Les jetons émis par l’API MFA ne contiennent pas la demande
amr
. La demandeamr
signale les méthodes d’authentification utilisées lorsque l’utilisateur reçoit le jeton d’ID. Pendant l’authentification de l’API MFA, l’application gère le flux d’authentification et peut imposer la MFA si cela s’avère nécessaire.
Exemple : Valeurs avec MFA
codeblockOld.header.login.logInButton codeblockOld.header.login.configureSnippetExemple : Valeurs sans MFA
Scénarios : Données salariales avec notifications poussées
Dans le scénario suivant, une application Web authentifie un utilisateur avec un nom d’utilisateur et un mot de passe. Certains utilisateurs souhaitent accéder à un écran particulier affichant des données salariales, ils doivent donc s’authentifier par le facteur poussé Guardian.Prérequis
Pour ce scénario, vous devez configurer les éléments suivants dans le tableau de bord :- Inscription d’une application Web.
- Création d’une connexion à une base de données.
- Activation de la MFA pour utiliser les notifications poussées.
Créer une action
Créer une action qui demande à l’utilisateur de s’authentifier par MFA lorsque l’application Web le demande. Rendez-vous dans le Tableau de bord > Actions > Flux, et créez une action qui comporte le contenu suivant :- La variable
CLIENTS_WITH_MFA
contient les identifiants des clients des applications auxquelles vous souhaitez que cette action s’applique. Vous pouvez la supprimer (ainsi que la conditionif
qui suit) si vous n’en avez pas besoin. - La propriété
event.transaction.acr_values
est un tableau de chaînes qui contient les références de classe de contexte d’authentification (acr
). Il s’agit d’une propriété facultative qui n’existe que lorsque l’application l’inclut dans la demande d’authentification adressée au serveur d’autorisation. Dans cet exemple, notre application Web l’inclura dans la demande d’authentification, mais uniquement lorsqu’un utilisateur qui ne s’est pas encore authentifié par MFA essaie d’accéder aux informations salariales. Lorsque notre application Web l’inclut, elle définit une valeur dehttp://schemas.openid.net/pape/policies/2007/06/multi-factor
. Cette valeur signifie que nous voulons que le serveur d’autorisation exige la MFA. La propriétéapi.multifactor
que nous avons définie dans notre code invite l’utilisateur à procéder par MFA, en utilisant l’une des méthodes proposées nous avons configurées dans le locataire. Pour en savoir plus sur la méthodeapi.multifactor.enable()
, consultez Déclencheurs d’action : objet API post-connexion. - La politique
http://schemas.openid.net/pape/policies/2007/06/multi-factor
définit un mécanisme d’authentification où l’utilisateur final s’authentifie auprès du fournisseur en fournissant plus d’un facteur d’authentification, ou MFA. Pour en savoir plus, consultez Extension de la politique d’authentification du fournisseur OpenID 1.0.
Configurer l’application
Configurer l’application pour vérifier que l’utilisateur s’est authentifié par MFA lorsque celui-ci tente d’accéder à la page d’informations salariales restreintes. Lorsqu’un utilisateur s’est authentifié par MFA, les demandes du jeton d’ID contiennent la demandeamr
avec une valeur de mfa
.) L’application Web affichera la page restreinte si l’utilisateur s’est déjà authentifié par MFA; sinon, l’application Web enverra une nouvelle demande d’authentification qui inclut le paramètre acr_values
avec une valeur de :
http://schemas.openid.net/pape/policies/2007/06/multi-factor
qui déclenchera l’action.
L’application Web dans ce scénario utilise le flux de code d’autorisation pour l’authentification, la requête est donc la suivante :
amr
avec une valeur de mfa
. Pour apprendre à échanger le code contre un jeton d’ID, consultez Ajouter une connexion utilisant le flux de code d’autorisation.
Valider un jeton d’ID
Dans ce scénario, effectuez les validations en utilisant le Code d’exemple de jeton Web JSON, qui vérifie la signature du jeton (jwt.verify
), décode le jeton, vérifie si la charge utile contient amr
, et, si c’est le cas, enregistre les résultats dans la console.