在2因子身份验证期间出现auth0 unsupported_challenge_type错误

时间:2017-11-27 11:47:28

标签: authentication oauth oauth-2.0 auth0 multi-factor

我想用auth0(用户名/密码和短信代码)实现双因素注册。我没有使用Lock小部件,而是试图实现基于auth0 API的注册。

所以,我现在有以下步骤。

1使用

注册

{ "client_id":"MY_CLIENT_ID", "client_secret":"MY_CLIENT_SECRET", "connection": "Username-Password-Authentication", "email": "sowhat@what.what", "username": "sowhat", "password": "sowhat@what.what", "phone_number": "+38...56" // I have access to this number }

POST https://somedomain.eu.auth0.com/oauth/token

响应是用户创建的。

2尝试使用用户名/密码登录

{ "client_id":"MY_CLIENT_ID", "client_secret":"MY_CLIENT_SECRET", "audience":"http://localhost", "email": "sowhat@what.what", "username": "sowhat", "password": "sowhat@what.what", "grant_type":"password" }

mfa_required

回复是mfa_tokenPOST https://somedomain.eu.auth0.com/mfa/challenge字符串。

3请求mfa挑战

{ "client_id":"MY_CLIENT_ID", "client_secret":"MY_CLIENT_SECRET", "challenge_type": "oob otp", "mfa_token": "MFA_TOKEN_FROM_PREVIOUS_STEP" }

{
    "error": "unsupported_challenge_type",
    "error_description": "User is not enrolled with guardian"
}

回复是

Username-Password-Authentication

所以我真的不知道如何解决这个问题。我想原因可能是因为用户个人资料中缺少phone_number,但我实际上并不知道如何通过{{1}}连接添加它。

1 个答案:

答案 0 :(得分:0)

看起来你需要让用户参与“卫报”。 首先需要启用Guardian Factory: 请致电: curl -H "Authorization: Bearer %your_token%" -X PUT -H "Content-Type: application/json" -d '{"enabled":true}' "https://%your_domain%/api/v2/guardian/factors/sms"

现在我们可以让用户参与卫报:

  1. 创建票证: curl -H "Authorization: Bearer %your_token%" -X POST -H "Content-Type: application/json" -d '{"user_id":"%user_id%"}' "https://%your_domain%/api/v2/guardian/enrollments/ticket"

  2. 在回复中关注ticket_url

  3. 输入电话号码 opened form

  4. 等待设备上的otp

  5. 将otp置于早期开放状态。

  6. 在这些步骤之后,用户将参与Guardian。它应该避免上述问题。