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.

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.

S’inscrire avec OTP

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. Pour vous inscrire avec OTP, définissez le paramètre authenticator_types sur [otp].
curl --request POST \
  --url 'https://{yourDomain}/mfa/associate' \
  --header 'authorization: Bearer MFA_TOKEN' \
  --header 'content-type: application/json' \
  --data '{ "authenticator_types": ["otp"] }'
Si l’étape réussie, vous recevez une réponse comme celle-ci :
{
  "authenticator_type": "otp",
  "secret": "EN...S",
  "barcode_uri": "otpauth://totp/tenant:user?secret=...&issuer=tenant&algorithm=SHA1&digits=6&period=30",
  "recovery_codes": [ "N3B...XC"]
}
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 OTP

Pour confirmer l’inscription, l’utilisateur final devra entrer le code secret obtenu à l’étape précédente dans une application génératrice d’OTP comme Google Authenticator. Il peut entrer le code secret en scannant un code QR avec le barcode_uri ou en saisissant manuellement le code secret dans cette application OTP. Vous devez donner aux utilisateurs un moyen d’obtenir le code secret sous forme de texte au cas où ils ne pourraient pas scanner le code QR (par exemple, s’ils s’inscrivent à partir d’un appareil mobile ou utilisent une application OTP sur un ordinateur de bureau). Après que l’utilisateur a entré le code secret, l’application OTP affichera un code à 6 chiffres que l’utilisateur devra entrer dans votre application. L’application doit ensuite effectuer une requête POST vers le point de terminaison du jeton , en incluant cette valeur otp.
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-otp \
  --data 'client_id={yourClientId}' \
  --data 'mfa_token={mfaToken}' \
  --data 'client_secret={yourClientSecret}' \
  --data 'otp={userOtpCode}'
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.

Défi avec OTP

Obtenir un jeton MFA

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

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

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'
Vous obtiendrez une liste de facteurs d’authentification avec le format suivant :
[
    {
        "id": "recovery-code|dev_qpOkGUOxBpw6R16t",
        "authenticator_type": "recovery-code",
        "active": true
    },
    {
        "id": "totp|dev_6NWz8awwC8brh2dN",
        "authenticator_type": "otp",
        "active": true
    }
]

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

L’utilisateur obtiendra un mot de passe à usage unique, que vous récupérerez ensuite auprès de lui. Vous pouvez vérifier le code et obtenir des jetons d’authentification en utilisant le point de terminaison du jeton Oauth0, tout en précisant le mot de passe à usage unique dans le paramètre otp.
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-otp \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}' \
  --data 'mfa_token={mfaToken}' \
  --data 'otp={userOtpCode}'
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