Personnaliser les inscriptions à MFA pour la connexion universelle

Auth0 prend en charge une variété de facteurs pour sécuriser l’accès des utilisateurs avec l’authentification multifacteur (MFA). Grâce aux actions post-login, vous pouvez personnaliser vos flux de MFA et inviter les utilisateurs à s’inscrire à des facteurs particuliers. Une fois qu’un utilisateur est inscrit à un facteur, il peut utiliser celui-ci comme méthode secondaire d’authentification lors des connexions futures.

Vous pouvez également utiliser des informations contextuelles pour personnaliser davantage vos flux d’inscription à MFA. Par exemple, vous pouvez demander aux utilisateurs de s’inscrire aux SMS pour une application, tout en les invitant à s’inscrire aux notifications poussées ou à WebAuthN pour une autre application.

Cette fonctionnalité vous permet de personnaliser les flux d’inscription à la MFA. Si vous souhaitez personnaliser les flux de MFA pour les utilisateurs déjà inscrits, consultez Personnaliser la sélection MFA pour la connexion universelle.

Fonctionnement

Vous pouvez utiliser Actions pour personnaliser vos flux d’inscription à MFA. Plus particulièrement, vous pouvez modifier le déclencheur post-connexion du Flux de connexion à l’aide des méthodes d’Authentication API suivantes :

  • enrollWith: Cette section spécifie le facteur par défaut présenté aux utilisateurs lors de l’inscription. Facultativement, vous pouvez fournir une liste alternative de facteurs parmi lesquels les utilisateurs peuvent choisir. Si elle est fournie, un lien « Essayer une autre méthode » s’affiche sur l’invite d’inscription.

  • enrollWithAny: Cette section spécifie un ensemble de facteurs parmi lesquels les utilisateurs peuvent choisir lors de l’inscription. Par défaut, cette méthode présente une invite de sélection qui permet aux utilisateurs de choisir leur facteur souhaité. Dans certains cas, l’expérience utilisateur peut varier :

    • Si deux facteurs ou plus ont été spécifiés, l’invite de sélection s’affiche à l’utilisateur.

    • Si l’utilisateur s’est déjà inscrit à tous les facteurs spécifiés sauf un, l’invite de sélection est ignorée, et l’utilisateur est invité à s’inscrire au facteur restant.

    • Si l’utilisateur est déjà inscrit dans tous les facteurs spécifiés, la commande échoue et la séquence de connexion se poursuit.

Vous pouvez utiliser une combinaison de ces méthodes pour personnaliser vos flux d’inscription à MFA. Vous pouvez également intégrer des métadonnées utilisateur, telles que les rôles ou la date de la dernière connexion, pour créer des expériences plus personnalisées.

Les flux d’inscription personnalisés prennent en charge les facteurs suivants :

  • otp

  • recovery-code

  • push-notification

  • téléphone

    • méthode préférée : voix

    • méthode préférée : sms

    • méthode préférée : les deux

  • webauthn-platform

  • webauthn-roaming

Après qu’un utilisateur s’est inscrit à un facteur, sa valeur est ajoutée à enrolledFactors. Cette propriété représente la liste des facteurs actifs associés à leur compte utilisateur.

Le tableau event.authentication.methods inclut un champ type lorsque le nom de la méthode est défini sur mfa. Ce champ contient des valeurs de facteur (chaîne) qui correspondent à celles utilisées par le champ type dans enrolledFactors.

Lorsqu’une inscription à MFA se produit, methods contient l’objet de name:mfa et le type défini sur le facteur utilisé pour cet événement. methods et enrolledFactors ne sont mis à jour que lorsqu’une action commence pour la première fois. Vous pouvez accéder aux résultats d’un événement d’inscription dans l’action suivante du flux.

Pour en apprendre davantage, examinez les ressources suivantes :

Flux séquencés et contextuels

Avec les commandes enrollWith ou enrollWithAny vous pouvez utiliser des informations contextuelles pour déterminer la meilleure inscription ou la série d’inscriptions à présenter aux utilisateurs.

  • La commande enrollWith prend en charge un facteur initial ou par défaut, ainsi qu’une liste d’alternatives. Les utilisateurs ne peuvent s’inscrire qu’à un seul facteur par commande.

  • La commande enrollWithAny prend en charge une liste de facteurs. L’ordre spécifié des facteurs détermine comment la liste s’affiche aux utilisateurs. Les utilisateurs ne peuvent s’inscrire qu’à un seul facteur par commande.

Grâce à ces commandes, vous pouvez tirer parti des éléments suivants :

  • Flux séquencés : Inscrivez les utilisateurs avec une série de facteurs dans un ordre spécifique.

  • Flux contextuels : Déterminez quel facteur proposer à l’utilisateur en fonction des métadonnées ou des commandes précédentes dans le flux.

Pour illustrer ces flux, considérons l’exemple suivant :

// Action 1

exports.onExecutePostLogin = async (event, api) => {
  if (event.user.enrolledFactors.length) {
    // already enrolled, challenge
    api.authentication.challengeWithAny(event.user.enrolledFactors.map(m => ({type: m.type})));
    if (event.user.app_metadata.isAdmin &&
        !event.user.enrolledFactors.some(m => m.type === 'webauthn-roaming')) {
          // if is admin and doesn't have a security key, meaning a different factor was used, enroll now
          api.authentication.enrollWith({type: 'webauthn-roaming'})
        }
  }
  else {
    // not enrolled; choose a factor to enroll now
    api.authentication.enrollWithAny([{type: 'webauthn-roaming'}, {type: 'otp'}]);
    if (event.user.app_metadata.isAdmin) {
      // one more factor for admins
      api.authentication.enrollWithAny([{type: 'webauthn-roaming'}, {type: 'otp'}]);
    }
  }
};

// Action 2

exports.onExecutePostLogin = async (event, api) => {
  function performed(type) {
    return event.authentication.methods.some(m => m.name === 'mfa' &&
           m.type === type &&
           Date.now() - new Date(m.timestamp).getTime() < 5000)
  }
  if (event.user.app_metadata.isAdmin) {
      // enforce both factors are used by challenging the one that has not been used yet
      if (!performed('webauthn-roaming')) {
        api.authentication.challengeWith({type: 'webauthn-roaming'})
      }
      else if (!performed('otp')) {
        api.authentication.challengeWith({type: 'otp'})
      }
  }
};

Was this helpful?

/

Ces deux actions fusionnent pour créer un scénario où les utilisateurs sans le rôle d’administrateur sont tenus de s’inscrire soit avec un mot de passe à usage unique (OTP), soit avec une clé de sécurité. À l’inverse, les utilisateurs ayant le rôle d’administrateur doivent s’inscrire dans les deux facteurs.

L’Action 1 examine les app_metadata pour déterminer si l’utilisateur est un administrateur, puis l’invite à s’inscrire dans des facteurs spécifiques. Si un utilisateur administrateur ne s’est inscrit qu’à l’OTP, il est d’abord confronté à l’OTP pour terminer son authentification. Ils sont ensuite invités à s’inscrire avec des clés de sécurité (webauthn-roaming).

Le flux fait une pause après l’exécution de l’Action 1, et event.user.enrolledFactors et event.authentication.methods seront mises à jour lorsque l’Action 2 s’exécutera. Cela permet au code de l’Action de prendre des décisions en fonction des données réelles de l’utilisateur lorsque les utilisateurs ont le choix de se confronter à ou de s’inscrire dans différents facteurs.

Remarque : Cette méthode d’exécution des actions s’applique uniquement à celles contenant les commandes challengeWith ou challengeWithAny. Les actions servant à d’autres fins ne sont pas affectées.

Avant de commencer

Avant de pouvoir personnaliser vos flux MFA, vous devez configurer MFA dans votre locataire et activer l’option Personnaliser les facteurs MFA à l’aide du paramètre Actions. Vous pouvez activer un ou plusieurs facteurs et définir vos politiques MFA sur votre Auth0 Dashboard dans Security (Sécurité) > Multi-factor Auth (Authentification multifacteur).

Pour personnaliser vos flux, vous devez activer Personnaliser les facteurs MFA à l’aide du commutateur d’actions situé dans la section Paramètres additionnels. Vos flux personnalisés ne fonctionneront pas correctement si ce paramètre n’est pas activé.

Auth0 Dashboard > Sécurité > Authentification multifacteur > paramètres additionnels

Remarque : Les Actions avec les commandes enrollWith ou enrollWithAny remplacent toutes les politiques ou règles existantes qui activent ou désactivent la MFA dans un locataire.

Personnaliser les flux d’inscription à MFA

Après avoir configuré la MFA pour votre locataire, vous pouvez créer des Actions post-login pour personnaliser vos flux d’inscription à MFA.

Créer votre action post-connexion

Vous pouvez créer des actions via Auth0 Dashboard :

  1. Accédez à Actions > Flows (Flux) et sélectionnez Login (Connexion).

  2. Dans le panneau Add Action (Ajouter une action), sélectionnez l’icône plus sign (+) et choisissez Build from scratch (Construire à partir de zéro).

  3. Sur la fenêtre contextuelle Créer une action :

    • Saisissez un nom pour votre action.

    • Sélectionnez Login / Post-Login (Connexion/ Post-connexion) comme déclencheur.

    • Utilisez Node 18 (Nœud 18) (Recommandé) comme temps de fonctionnement.

  4. Révisez la fenêtre contextuelle pour garantir son exactitude. Ensuite, sélectionnez Create (Créer).

  5. Dans l’éditeur de code, ajoutez votre code personnalisé à la commande onPostExecute.

  6. Une fois votre commande prête, sélectionnez Deploy (Déployer).

  7. Sélectionnez Add to Flow (Ajouter au flux) sur la notification de déploiement réussi.

    • Remarque : Si la notification se ferme, choisissez Back to Flow (Retour au flux) situé au-dessus de l’éditeur de code.

  8. Faites glisser et déposez votre nouvelle commande à partir du panneau Add Action (Ajouter une action) jusqu’à votre flux de connexion. Ensuite, sélectionnez Appliquer.

Pour réaliser d’autres modifications après avoir effectué un enregistrement, naviguez vers Actions > Library (Bibliothèque) > Custom (Personnaliser) et sélectionnez votre action. Vous pouvez ensuite mettre à jour et redéployer votre code selon vos besoins.

Tester votre action post-connexion

Pour être certain que vos commandes fonctionnent correctement, vous pouvez mettre votre action à l’essai via le Tableau de bord Auth0 :

  1. Naviguez vers Authentication (Authentification)> Authentication Profile (Profil d’authentification).

  2. Sélectionnez Try (Essayer) pour ouvrir une invite de connexion modèle dans un nouvel onglet.

  3. Entrez vos informations et mettez votre nouveau flux MFA à l’épreuve.

Si le flux réussit, un écran de confirmation s’affiche. Si vous rencontrez des problèmes, vous pouvez mettre votre code à jour en naviguant vers Actions > Library (Bibliothèque) > Custom (Personnaliser)

Exemples de cas d’utilisation

Les exemples ci-dessous décrivent un cas d’utilisation courant pour personnaliser les flux d’inscription à MFA.

Proposez aux utilisateurs des options MFA pour l’inscription

L’exemple suivant met les utilisateurs au défi en mettant par défaut un mot de passe à usage unique. S’ils le souhaitent, ces derniers peuvent accéder au lien Essayer une autre méthode pour s’authentifier par courriel.

Dépannage

Si vous rencontrez des erreurs ou obtenez des résultats inattendus avec vos inscriptions personnalisées à MFA, vous pouvez utiliser les renseignements ci-dessous pour vous aider à identifier et à résoudre ces problèmes.

Journaux de locataires

Vous pouvez surveiller vos inscriptions personnalisées à la MFA grâce aux journaux des locataires.

Les journaux des locataires sont disponibles dans Auth0 Dashboard sous Monitoring (Surveillance) > Logs (Journaux). Vous pouvez également récupérer les journaux à l’aide de Management API.

Si vous ou vos utilisateurs remarquez un comportement inattendu, consultez les journaux des locataires pour les codes d’événement suivants afin d’en savoir plus :

Scénario Événement Message d’erreur
Un utilisateur est invité à s’inscrire avec un facteur particulier. Cependant, le facteur demandé répond à l’une des conditions suivantes :
  • Le facteur n’est pas activé dans votre locataire.
  • Le facteur n’est pas pris en charge par le navigateur de l’utilisateur.
  • L’utilisateur s’est déjà inscrit au facteur demandé.
Dans ce scénario, l’utilisateur peut compléter le flux si des facteurs de remplacement sont possibles.
w Une inscription MFA est utilisée dans une action post-connexion, mais le facteur demandé ${factor.name} n’est pas correctement configuré. Activer le facteur demandé et s’assurer que l’utilisateur n’est pas déjà inscrit avec ce facteur.
Un utilisateur est invité à s’inscrire avec un ou plusieurs facteurs, mais les facteurs fournis ne peuvent pas être utilisés pour l’inscription. Dans ce cas, l’utilisateur ne peut pas terminer le flux. mfar Une inscription MFA est utilisée dans une action post-connexion mais les facteurs demandés ne sont pas correctement configurés. Pour effectuer la MFA, activez les facteurs demandés et assurez-vous que l’utilisateur n’est pas déjà inscrit avec ces facteurs.
Un utilisateur tente de s’inscrire dans un nouveau facteur sans avoir effectué au moins un défi-réponse avec une inscription existante. mfar Une inscription à la MFA a été demandée mais l’utilisateur est déjà inscrit à la MFA. Mettez au défi avec au moins un facteur existant avant d’enregistrer un nouveau facteur.

Liste de vérification de dépannage

La liste de vérification suivante fournit des suggestions supplémentaires pour identifier et résoudre les problèmes courants liés aux flux MFA personnalisés.

  1. Le commutateur Customize MFA factors with Actions (Personnaliser des facteurs MFA avec des actions) doit être activé.

  2. Les facteurs référencés dans vos actions doivent être activés dans votre locataire.

  3. Assurez-vous que vos actions ont été déployées et enregistrées dans votre pipeline.

    1. Naviguez vers Auth0 Dashboard > Actions > Bibliothèque > Personnaliser. Localisez votre action dans la liste et assurez-vous que son statut est Déployée. Si un statut différent est répertorié, accédez à votre action, vérifiez le code et cliquez sur Déployer en haut à droite.

    2. Naviguez vers Dashboard Auth0 > Actions > Bibliothèque > Flux et sélectionnez Connexion. Assurez-vous que votre action est répertoriée dans le flux. Si ce n’est pas le cas, accédez à l’onglet Personnaliser du panneau Ajouter une action et faites glisser et déposez votre action dans le flux de connexion. Ensuite, sélectionnez Appliquer.

  4. Assurez-vous d’avoir la dernière version des actions post-connexion.