Я новичок в AWS Cognito и в настоящее время у меня 2 проблемы с ним:
- при выполнении входа с использованием MFA SMS.
- при установке флага MFA SMS навключено / отключено
Я использую Node.js и Amazon Cognito Identity SDK для JavaScript [1] [2]
Поток входа в мое приложение:
Пользователь отправляет номер мобильного телефона (затем перенаправляется в форму проверки TOTP)
- В это время приложение достигает моей конечной точки API
- и, в свою очередь, вызываетфункция отправки TOTP, если номер зарегистрирован
- Пользователь получает код TOTP с помощью SMS
- Пользовательский код TOTP
- Приложение достигает моей конечной точки API
- и затем вызывает функцию для проверки TOTP
- Если проверка TOTP подтверждена, тогда мой API возвращает Cognito Token в приложение
Iмне удалось отправить TOTP с помощью SMS, но я не могу найти способ проверить TOTP, чтобы получить токен Cognito.Пример [3], показанный на странице Github, использует подсказку, поэтому все содержится в этой функции.Однако я не могу сделать это в моем случае, так как 2 вызова должны происходить на 2 разных экранах.Я попытался отделить функцию sendMFACode (), но вместо проверки TOTP он отправляет другое SMS.
Я бью стену, и я нашел ограниченные документы / ресурсы.
Ссылка:
- https://github.com/aws-amplify/amplify-js/tree/master/packages/amazon-cognito-identity-js
- https://github.com/amazon-archives/amazon-cognito-identity-js/blob/master/src/CognitoUser.js
- https://stackoverflow.com/a/51394500
Мои настройки пула пользователей «MFA необязательны», поэтому я могу использовать метод входа в систему по электронной почте (не отправляет SMS для входа по электронной почтеЯ знаю, что это странно. До сих пор мне удалось установить MFA в коде с помощью функции enableMFA()
.Однако на странице Github написано, что функция enableMFA()
устарела, вместо этого используйте setUserMfaPreference()
.Я попробовал это и получил «УСПЕХ», но когда я открываю его в веб-консоли AWS, он все еще заявляет, что SMS MFA отключен.Я что-то здесь упускаю?
Вот мой код:
cognitoUser.sendMFACode(VerificationCode, {
onSuccess: (result) => {
console.log(result)
},
onFailure: (error) => {
console.log(error)
}
})
debug result:
{
"code": "InvalidParameterException",
"Name": "InvalidParameterException",
"Message" "Invalid Parameter Required Session"
}
Примечание. Я получил исключение по недопустимым параметрам, хотя и успешно получил SMS.