1

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

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

1 注册

POST https://somedomain.eu.auth0.com/dbconnections/signup

{
    "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
}

响应是创建用户。

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

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

{
    "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_requiredmfa_token字符串。

3 请求 mfa 质询

POST https://somedomain.eu.auth0.com/mfa/challenge

{
    "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"
}

所以我真的不知道我该如何解决这个问题。我想原因可能是因为用户配置文件中缺少phone_number,但我实际上不知道如何通过Username-Password-Authentication连接添加它。

4

1 回答 1

0

看起来您需要让用户参与“Guardian”。首先你需要启用 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"

现在我们可以让 Guardian 中的用户参与进来:

  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. 将电话号码放入 打开的表格

  4. 在您的设备上等待 otp

  5. 将 otp 放入早期打开的形式。

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

于 2017-11-28T03:51:43.330 回答