Okta API: многофакторный выпуск SMS
Я пытаюсь использовать Okta API в веб-приложении, чтобы позволить пользователям активировать / деактивировать фактор SMS MFA в своих учетных записях. Тем не менее, я столкнулся с проблемой, как подробно описано ниже:
Сначала на вновь созданной учетной записи:
- Фактор SMS регистрируется с помощью метода Enroll Okta SMS Factor API.
- Этот фактор впоследствии активируется с помощью метода Acivate SMS Factor API.
- Затем мы деактивируем фактор, используя метод Reset Factor API.
Все это работает нормально и без ошибок, однако теперь, при попытке снова ввести коэффициент SMS:
- Если используется один и тот же номер телефона: код безопасности не будет отправлен, и двухфакторная аутентификация SMS будет включена без проверки (это нормально, но неожиданно)
Если используется другой номер телефона: Okta возвращает следующий объект ошибки:
stdClass Object ( [errorCode] => E0000001 [errorSummary] => Api validation failed: factorEnrollRequest [errorLink] => E0000001 [errorId] => oae3MBJJpGrR6Oj_MkGOxed_g [errorCauses] => Array ( [0] => stdClass Object ( [errorSummary] => There is an existing verified phone number. ) ) )
Как я могу решить эту проблему? Я пропускаю шаг, когда мне нужно удалить ранее подтвержденный номер телефона? Если так, то как мне это сделать?
4 ответа
Метод обновления для этой конечной точки не задокументирован, но его можно выполнить.
Я не знаю, как восстановить процесс, если вы ранее удалили SMS и не знаете ранее зарегистрированный номер телефона.
Вне этого сценария, если вы меняете номер, сделайте следующее.
- Получить полный список факторов
- Определите фактор SMS, который нужно изменить (нам нужен фид)
Используя идентификатор фактора существующего SMS и новый номер телефона
POST https://{yourorg}.com/api/v1/users/{:uid}/factors/{:fid} { "profile": { "phoneNumber": "+1 555 123 1234" } }
Ответ будет таким же, как и у вновь зачисленного фактора SMS
- сбросить / удалить существующий фид
- Активируйте новый фактор, используя
Если вы столкнулись с ситуацией, когда предыдущий фактор был сброшен, и вы не знаете fid, но знаете номер, который вы можете зарегистрировать, найдите этот fid и затем начните последовательность, описанную выше.
Если пользователь хочет использовать другой номер телефона (вместо существующего номера телефона), тогда вызов API регистрации должен предоставить для параметра запроса updatePhone значение true.
Номер телефона не может быть обновлен для уже активированного фактора SMS. Если вы хотите обновить номер телефона, вам необходимо сбросить коэффициент и повторно зарегистрировать его:
Перечислите зарегистрированные факторы и извлеките соответствующий factorId. Сбросьте коэффициент Затем зарегистрируйте фактор снова. Вы можете передать параметр updatePhone, для которого установлено значение true, вместе с обновленным значением phoneNumber, пока Factor имеет значение статуса PENDING_ACTIVATION.
Пример запроса
curl -v -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: SSWS ${api_token}" \
-d '{
"factorType": "sms",
"provider": "OKTA",
"profile": {
"phoneNumber": "+1-555-415-1337"
}
}' "https://${yourOktaDomain}/api/v1/users/${userId}/factors?updatePhone=true"
Если вы хотите заменить существующее SMS на новое и отправить пользователю одноразовый пароль:
- Шаг 1:
- Шаг 2:
- Шаг 3: https://developer.okta.com/docs/reference/api/factors/#request-example-9
Если вы хотите заменить существующее SMS на новое и без отправки OTP пользователю:
Шаг 3: Аналогичен шагу 3 выше, но с ?activate=true. Завиток ниже:
curl -v -X POST
-H "Принять: application/json"
-H "Content-Type: application/json"
-H "Авторизация: SSWS ${api_token}"
-d '{ "factorType": "sms", " провайдер": "OKTA", "profile": { "Номер телефона": "+1-555-415-1337" } }' "https://${yourOktaDomain}/api/v1/users/${userId}/ факторы?updatePhone=true&activate=true"
У меня то же требование, что я пробовал следующий процесс:
1. Получите список факторов от пользователя, используя GET FACTORS
- Извлеките FactorID.
2.Удалите существующий ФАКТОР SMS с помощью DELETE FACTOR
- FactorId должен быть указан в URL
3. Затем используйте {{url}}/api/v1/authn/factors?updatePhone=true
Этот процесс помог мне удалить активированный фактор SMS и зарегистрировать SMS как MFA с обновленным номером мобильного телефона.
Надеюсь это поможет.