Passer au contenu principal
Auth0 offre un flux intégré d’enregistrement et d’authentification  en utilisant la connexion universelle. Cependant, si vous souhaitez créer votre propre interface utilisateur, vous pouvez utiliser l’API MFA pour ce faire. Lorsque le courriel est activé comme facteur d’authentification, tous les utilisateurs disposant de courriels vérifiés peuvent les utiliser pour compléter le MFA.

La disponibilité varie selon le plan Auth0

L’implémentation propre à votre connexion et votre plan Auth0 ou accord personnalisé que vous utilisez déterminent si cette fonctionnalité est disponible. Pour en savoir plus, lisez Tarification.

Prérequis

Avant de pouvoir utiliser les API MFA, vous devrez activer le type d’autorisation MFA pour votre application. Accédez à Auth0 Dashboard > Applications > Paramètres avancés > Types d’autorisation et sélectionnez MFA.

Inscription avec courriel

Pour permettre aux utilisateurs d’inscrire des courriels en plus de leur courriel vérifié comme identité principale, vous devez suivre les étapes suivantes.

Obtenir un jeton MFA

En fonction du moment où vous lancez l’enregistrement, vous pouvez obtenir un jeton d’accès en utilisant l’API MFA de plusieurs façons :

Inscrire des facteurs d’authentification

Faites une demande POST (PUBLIER) au point de terminaison d’association MFA pour enregistrer le facteur d’authentification de l’utilisateur. Le jeton du porteur requis par ce point de terminaison est le jeton MFA obtenu à l’étape précédente. Utilisez les paramètres suivants :
ParamètreValeur
authentication_types[oob]
oob_channels[email]
emailemail@address.com, l’adresse courriel de l’utilisateur.
curl --request POST \
  --url 'https://{yourDomain}/mfa/associate' \
  --header 'authorization: Bearer MFA_TOKEN' \
  --header 'content-type: application/json' \
  --data '{ "authenticator_types": ["oob"], "oob_channels": ["email"], "email" : "email@address.com" }'
Si l’étape réussie, vous recevez une réponse comme celle-ci :
{
    "authenticator_type": "oob",
    "binding_method": "prompt",
    "oob_code" : "Fe26..nWE",
    "oob_channel": "email",
    "recovery_codes": [ "N3BGPZZWJ85JLCNPZBDW6QXC" ]
  }
Si vous recevez une erreur User is already enrolled (Utilisateur déjà inscrit), l’utilisateur a déjà un facteur MFA inscrit. Avant d’associer un autre facteur à l’utilisateur, vous devez lancer un défi-réponse à l’utilisateur avec le facteur existant. Si c’est la première fois que l’utilisateur associe un authentifiant, vous remarquerez que la réponse comprend recovery_codes. Les codes de récupération sont utilisés pour accéder au compte de l’utilisateur dans le cas où il perdrait l’accès au compte ou à l’appareil utilisé pour son authentification à deux facteurs. Ce sont des codes à usage unique, et de nouveaux codes sont générés au besoin.

Confirmer l’inscription par courriel

L’utilisateur recevra un courriel contenant le code à six chiffres qu’il devra saisir dans l’application. Pour compléter l’inscription, réalisez une requête POST au /oath/jeton du point de terminaison. Incluez le oob_code retourné dans la réponse précédente et le binding_code avec la valeur inscrite dans le courriel.
curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --data grant_type=http://auth0.com/oauth/grant-type/mfa-oob \
  --data 'mfa_token={mfaToken}' \
  --data 'oob_code={oobCode}' \
  --data 'binding_code={userEmailOtpCode}' \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}'
Si l’appel ne réussi pas, vous recevrez une réponse dans le 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 entièrement associé et prêt à être utilisé, et vous disposez des jetons d’authentification pour l’utilisateur. À tout moment, vous pouvez vérifier si un authentificateur a été confirmé en appelant le point de terminaison des facteurs d’authentification MFA. Si l’authentification est confirmée, la valeur passe de active à réelle. Vous pouvez éventuellement personnaliser les courriels que les utilisateurs reçoivent. Consultez Personnalisation des modèles de courriel pour en savoir davantage.

Défi-réponse avec courriel

Obtenir un jeton MFA

Obtenez un jeton MFA en suivant les étapes décrites dans Authentification avec le propriétaire de la ressource Autorisation par mot de passe et MFA.

Récupérer les facteurs d’authentification enregistrés

Pour effectuer le défi-réponse avec l’utilisateur, vous aurez besoin de l’authenticator_id pour le facteur que vous désirez utiliser. Vous pouvez énumérer toutes les authentifications à l’aide du point de terminaison des facteurs d’authentification MFA :
curl --request GET \
  --url 'https://{yourDomain}/mfa/authenticators' \
  --header 'authorization: Bearer MFA_TOKEN' \
  --header 'content-type: application/json'

Défi-réponse avec mot de passe à usage unique

Pour déclencher un défi-réponse avec courriel, POST au point de terminaison du défi-réponse MFA à l’aide de l’authenticator_id correspondante et du mfa_token.
curl --request POST \
  --url 'https://{yourDomain}/mfa/challenge' \
  --data '{  "client_id": "{yourClientId}",  "client_secret": "{yourClientSecret}",  "challenge_type": "oob",  "authenticator_id": "email|dev_NU1Ofuw3Cw0XCt5x", "mfa_token": "{mfaToken}" }'

Compléter l’authentification à l’aide du code reçu

Si l’opération réussie, vous recevrez la réponse suivante :
{
  "challenge_type": "oob",
  "oob_code": "abcd1234...",
  "binding_method": "prompt"
}
Votre application devrait inviter l’utilisateur à saisir un code et l’envoyer dans le cadre de la requête dans le paramètre binding_code dans l’appel suivant au point de terminaison du oauth/token :
curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=http://auth0.com/oauth/grant-type/mfa-oob \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}' \
  --data 'mfa_token={mfaToken}' \
  --data 'oob_code={oobCode}' \
  --data 'binding_code={userEmailOtpCode}'
Si l’appel réussi, vous recevrez une réponse dans le format ci-dessous, contenant le jeton d’accès :
{
  "id_token": "eyJ...i",
  "access_token": "eyJ...i",
  "expires_in": 600,
  "scope": "openid profile",
  "token_type": "Bearer"
}

En savoir plus

I