我想用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_token
和POST 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}}连接添加它。
答案 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"
现在我们可以让用户参与卫报:
创建票证:
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"
在回复中关注ticket_url
输入电话号码 opened form
等待设备上的otp
将otp置于早期开放状态。
在这些步骤之后,用户将参与Guardian。它应该避免上述问题。