我假设系统会根据documentation提示我,该声明特别指出:
在用户池的“MFA和验证”部分下,我检查了以下内容:
我添加了一个已验证的测试用户。
从那里开始,我按照文档同时处理了Associate the TOTP Token和Verify the TOTP Token,确认我在响应中得到了用于调用AssociateSoftwareToken的 secret 代码,并在响应中得到了VerifySoftwareToken的“SUCCESS”。
在这一点上,我相信在使用托管的UI登录页面时,应在提交用户名/密码后提示我输入一次性密码,并在成功验证后将其重定向到登录回调URL。在我的应用客户端中指定。
但是,提交用户名和密码后,我将立即被重定向,并且没有提示输入TOTP的提示。
最佳答案
在为测试帐户设置TOTP之后,可以通过显式调用SetUserMFAPreference使其工作。我的假设是,关联并验证TOTP会自动更改Cognito在用户身份验证流程方面的行为,这是错误的。它还要求我告诉Cognito为用户启用和使用TOTP。
我最初的困惑的症结在于,为用户生成和关联软件 token 以生成OTP并没有为用户启用它。还需要调用SetUserMFAPreference
为用户启用它。一旦完成,它就会按预期工作。例如,要启用软件MFA并将其设置为首选:
{
"AccessToken": "xyz123",
"SoftwareTokenMfaSettings": {
"Enabled": true,
"PreferredMfa": true
}
}
还有一个admin version of the API call可以达到相同的结果。关于amazon-web-services - 如何获取Amazon Cognito托管的UI提示输入TOTP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51643885/