Ошибка auth0 unsupported_challenge_type при двухфакторной аутентификации
Я хочу реализовать двухфакторную регистрацию с помощью auth0 (имя пользователя / пароль и код SMS). Я не использую виджет блокировки, пытаясь реализовать регистрацию на основе 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_required
а также mfa_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
подключение.
1 ответ
Похоже, вам нужно привлекать пользователей в "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:
Создать тикет:
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 в ответе
Введите номер телефона в открытую форму
В ожидании отп на вашем устройстве
Положите отп в ранее открытую форму.
После этих шагов пользователь будет вовлечен в Guardian. Следует избегать проблемы, описанной выше.