我假设系统会根据documentation提示我,该声明特别指出:



在用户池的“MFA和验证”部分下,我检查了以下内容:

  • 是否要启用多重身份验证(MFA)?
  • 可选
  • 您要启用哪些第二个因素?
  • 基于时间的一次性密码

  • 我添加了一个已验证的测试用户。

    从那里开始,我按照文档同时处理了Associate the TOTP TokenVerify 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/

    10-11 06:35