Passer au contenu principal
Auth0 fournit un flux intégré d’inscription à la et d’authentification avec Universal Login. Toutefois, si vous souhaitez créer votre propre interface utilisateur, vous pouvez utiliser l’API MFA pour le faire. Vous pouvez inscrire les utilisateurs et leur envoyer des demandes de vérification par notifications push avec l’application Guardian ou le SDK à l’aide de l’API MFA.

Prérequis

Avant de pouvoir utiliser les API de MFA, vous devez activer le type d’autorisation MFA pour votre application. Accédez à Auth0 Dashboard > Applications > Advanced Settings > Grant Types et sélectionnez MFA.

Inscription par notification push

Obtenir un jeton MFA

Selon le moment où vous lancez l’inscription, vous pouvez obtenir un pour utiliser l’API MFA de différentes façons :

Inscrire l’authentificateur

Effectuez une requête POST au point de terminaison MFA Associate pour inscrire l’authentificateur de l’utilisateur. Le jeton Bearer requis par ce point de terminaison est le jeton MFA obtenu à l’étape précédente. Pour l’inscription avec push, définissez le paramètre authenticator_types sur [oob] et le paramètre oob_channels sur [auth0]. Si l’opération réussit, vous recevez une réponse semblable à celle-ci :
{
    "authenticator_type": "oob",
    "barcode_uri": "otpauth://totp/tenant:user?enrollment_tx_id=qfjn2eiNYSjU3xID7dBYeCBSrdREWJPY&base_url=tenan",
    "recovery_codes": [
        "ALKE6EJZ4853BJYLM2DM2WU7"
    ],
    "oob_channel": "auth0",
    "oob_code": "Fe26.2...SYAg"
}
Si vous obtenez l’erreur User is already enrolled, c’est que l’utilisateur a déjà un facteur MFA inscrit. Avant d’associer un autre facteur à l’utilisateur, vous devez d’abord lui demander de s’authentifier avec le facteur existant. S’il s’agit de la première fois que l’utilisateur associe un authentificateur, vous remarquerez que la réponse inclut recovery_codes. Les codes de récupération servent à accéder au compte de l’utilisateur s’il perd l’accès au compte ou à l’appareil utilisé pour son facteur d’authentification secondaire. Ces codes ne peuvent être utilisés qu’une seule fois, et de nouveaux codes sont générés au besoin.

Confirmer l’inscription par push

Pour confirmer l’inscription, l’utilisateur final devra scanner un code QR à l’aide du barcode_uri dans l’application Guardian, au cours des 5 prochaines minutes. Une fois cela fait, l’application Guardian informera Auth0 que l’utilisateur s’est inscrit avec succès. Pour vérifier si cela s’est produit, interrogez le point de terminaison de jeton d’Auth0 avec le oob_code renvoyé par l’appel au point de terminaison MFA Associate. Si l’utilisateur n’a pas scanné le code, une réponse authorization_pending sera renvoyée, ce qui indique que vous devez appeler oauth_token de nouveau dans quelques secondes :
{
    "error": "authorization_pending",
    "error_description": "Authorization pending: please repeat the request in a few seconds."
}
Si l’appel réussit, vous recevrez une réponse au format suivant contenant le jeton d’accès :
{
  "id_token": "eyJ...i",
  "access_token": "eyJ...i",
  "expires_in": 600,
  "scope": "openid profile",
  "token_type": "Bearer"
}
À ce stade, l’authentificateur est correctement associé et prêt à être utilisé, et vous disposez des jetons d’authentification de l’utilisateur. Vous pouvez à tout moment vérifier si un authentificateur a été confirmé en appelant le point de terminaison MFA Authenticators. Si l’authentificateur est confirmé, la valeur renvoyée pour active est true.

Demande de vérification par notification push

Obtenir un jeton MFA

Obtenez un jeton MFA en suivant les étapes décrites dans S’authentifier avec le flux Resource Owner Password Grant et l’authentification MFA.

Récupérer les authentificateurs inscrits

Pour soumettre l’utilisateur à une demande de vérification, vous avez besoin de l’authenticator_id du facteur que vous voulez vérifier. Vous pouvez lister tous les authentificateurs inscrits à l’aide du point de terminaison MFA Authenticators : Vous obtiendrez une liste d’authentificateurs au format suivant :
[
    {
        "id": "recovery-code|dev_Ahb2Tb0ujX3w7ilC",
        "authenticator_type": "recovery-code",
        "active": true
    },
    {
        "id": "push|dev_ZUla9SQ6tAIHSz6y",
        "authenticator_type": "oob",
        "active": true,
        "oob_channel": "auth0",
        "name": "user's device name"
    },
    {
        "id": "totp|dev_gJ6Y6vpSrjnKeT67",
        "authenticator_type": "otp",
        "active": true
    }
]
Lorsque les utilisateurs s’inscrivent avec push, ils sont également inscrits à l’OTP, puisque Guardian prend en charge la vérification par OTP dans les cas où l’utilisateur n’a pas de connexion.

Demander une confirmation push à l’utilisateur

Pour déclencher une demande de confirmation push, envoyez une requête POST au point de terminaison MFA Challenge en utilisant l’authenticator_id correspondant et le mfa_token.

Terminer l’authentification avec le code reçu

Si l’opération réussit, vous recevez la réponse suivante :
{
    "challenge_type": "oob",
    "oob_code": "Fe26...jGco"
}
Votre application doit interroger régulièrement le point de terminaison OAuth0 Token jusqu’à ce que l’utilisateur accepte la notification push. L’appel peut renvoyer l’un des résultats suivants :
RésultatDescription
authorization_pendingErreur : si la demande de vérification n’a pas encore été acceptée ni rejetée.
slow_downErreur : si l’interrogation est trop fréquente.
access_token and refresh_tokenSi la demande de vérification a été acceptée; il faut cesser l’interrogation à ce stade.
invalid_grantErreur : si la demande de vérification a été rejetée; il faut cesser l’interrogation à ce stade.

Personnaliser la MFA

La MFA personnalisable avec les flux Resource Owner Password Grant, Embedded ou Refresh Token est en accès anticipé. En utilisant cette fonctionnalité, vous acceptez les conditions applicables de l’essai gratuit prévues dans le Master Subscription Agreement d’Okta. Pour en savoir plus sur les phases de lancement d’Auth0, consultez Product Release Stages. Pour participer à l’accès anticipé, communiquez avec l’assistance Auth0.
La MFA personnalisable permet aux utilisateurs de s’inscrire et de faire des demandes de vérification au moyen des facteurs de leur choix pris en charge par votre application. Lors de l’authentification au point de terminaison oauth/token, la réponse renvoie l’erreur mfa_required, qui inclut le mfa_token à utiliser avec l’API MFA, ainsi que le paramètre mfa_requirements, qui contient une liste d’authentificateurs :
{
  "error": "mfa_required",
  "error_description": "Multifactor authentication required",
  "mfa_token": "Fe26...Ha",
  "mfa_requirements": {
    "challenge": [
      { "type": "otp" },
      { "type": "push-notification" },
      { "type": "phone" },
      { "type": "recovery-code" }
      { "type": "email"} //fonctionne uniquement avec challenge
    ]
  }
}
Utilisez le mfa_token pour appeler le point de terminaison mfa/authenticator afin d’obtenir la liste de tous les facteurs auxquels l’utilisateur s’est inscrit et de repérer le même type que celui pris en charge par votre application. Vous devez aussi obtenir l’authenticator_type correspondant pour émettre des demandes de vérification :
[
  {
    "type": "recovery-code",
    "id": "recovery-code|dev_qpOkGUOxBpw6R16t",
    "authenticator_type": "recovery-code",
    "active": true
  },
  {
    "type": "otp",
    "id": "totp|dev_6NWz8awwC8brh2dN",
    "authenticator_type": "otp",
    "active": true
  }
]
Forcez la demande de vérification MFA en appelant le point de terminaison request/mfa/challenge. Personnalisez davantage votre flux MFA avec les Actions d’Auth0. Pour en savoir plus, consultez Actions Triggers: post-challenge - API Object.

En savoir plus