Я использую AWS CLI для включения пула пользователей MFA только с TOTP MFA (без SMS).
aws cognito-idp set-user-pool-mfa- config --user-pool-id xxxx_xxxx --mfa-configuration ДОПОЛНИТЕЛЬНО --software-token-mfa-configuration Включено = true
{
"SoftwareTokenMfaConfiguration": {
"Enabled": true
},
"MfaConfiguration": "OPTIONAL"
}
Вроде все в порядке, правда? Но когда я пытаюсь настроить предпочтения пользователя, я продолжаю получать эту ошибку:
Произошла ошибка (InvalidParameterException) при вызове операции AdminSetUserMFAPreference: Пользователь не настроил программный токен mfa
Команда: aws cognito-idp admin-set-user-mfa-preference --user-pool-id xxxx_xxxx --username username@email.com --software-token- mfa-settings Enabled = true
Попытка использовать настройки admin-set-user также не работает: aws cognito-idp admin-set-user-settings --user -pool-id us-xxxx-xxxx - имя пользователя username@email.com --mfa-option DeliveryMedium = EMAIL
Произошла ошибка (InvalidParameterException) при вызове операции AdminSetUserSettings: В настоящее время в качестве опции MFA поддерживается только атрибут phone_number.
Что мне не хватает? Требуется ли дополнительная конфигурация, нигде не упомянутая в документации?
Решение:
Сначала вам нужно получить ACCESS_TOKEN для пользователя и приступить к запуску процесса TOTP:
aws cognito-idp associate-software-token - -access-token ACCESS_TOKEN
(будет сгенерирован уникальный код, который можно использовать в Google Authenticator)
С кодом TOTP, полученным из приложения Authenticator, запустите:
aws cognito-idp verify-software-token --access-token ACCESS_TOKEN --user-code USER_CODE
С успешным сообщением предыдущей команды вы можете изменить пользователя предпочтение:
aws когнито-idp admin-set-user-mfa-preference --user-pool-id xxxxx --username xxxxxxx --software-token-mfa-settings Enabled = True , PreferredMfa = True