Ошибка 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:

  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. В ожидании отп на вашем устройстве

  5. Положите отп в ранее открытую форму.

После этих шагов пользователь будет вовлечен в Guardian. Следует избегать проблемы, описанной выше.

Другие вопросы по тегам