Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何让Amazon Cognito托管的UI提示TOTP?_Amazon Web Services_Amazon Cognito - Fatal编程技术网

Amazon web services 如何让Amazon Cognito托管的UI提示TOTP?

Amazon web services 如何让Amazon Cognito托管的UI提示TOTP?,amazon-web-services,amazon-cognito,Amazon Web Services,Amazon Cognito,我假设我会根据以下内容得到提示: 如果您的应用程序使用Amazon Cognito托管的用户界面登录用户,则该用户界面将显示第二个页面,供您的用户在提交用户名和密码后输入TOTP密码 在用户池的“MFA和验证”部分,我检查了以下内容: 是否要启用多因素身份验证(MFA)? 可选的 您希望启用第二个因素是什么? 基于时间的一次性密码 我添加了一个经过验证的测试用户 从那以后,我根据文档找到了两个,并确认我在调用AssociateSoftwareToken的响应中获得了密码,在Verif

我假设我会根据以下内容得到提示:

如果您的应用程序使用Amazon Cognito托管的用户界面登录用户,则该用户界面将显示第二个页面,供您的用户在提交用户名和密码后输入TOTP密码

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

  • 是否要启用多因素身份验证(MFA)?
    • 可选的
  • 您希望启用第二个因素是什么?
    • 基于时间的一次性密码
我添加了一个经过验证的测试用户

从那以后,我根据文档找到了两个,并确认我在调用AssociateSoftwareToken的响应中获得了密码,在VerifySoftwareToken的响应中获得了“成功”

此时,我相信当我使用托管UI登录页面时,在提交用户名/密码后,应该提示我输入一次性密码,并在成功验证后,重定向到我的应用程序客户端中指定的登录回调URL


但是,我在提交用户名和密码后立即被重定向,并且没有输入TOTP的提示。

在为测试帐户设置TOTP后,我可以通过显式调用来实现这一点。我认为关联和验证TOTP会自动改变Cognito关于用户身份验证流的行为,这是错误的。它还要求我告诉Cognito为用户启用并使用TOTP

我最初困惑的症结在于,生成并关联一个软件令牌来为用户生成OTP并不能为用户启用它。还需要调用
SetUserMFAPreference
为用户启用它。一旦完成,它就如预期的那样工作了。例如,要启用软件MFA并将其设置为首选:

{
   "AccessToken": "xyz123",
   "SoftwareTokenMfaSettings": { 
      "Enabled": true,
      "PreferredMfa": true
   }
}

还有一种方法可以达到同样的效果。

对于其他偶然发现这一点但仍然没有得到TOTP提示的人,您可能还需要清除cookies。即使您的池没有设置为记住用户设备,在不清除cookies的情况下,您仍然可以在没有TOTP的情况下登录

有道理,既然您将MFA设置为可选,请您更清楚一点好吗?您到底调用了什么?有关清除TOTP cookie的一些有用示例,请参阅。我设置了到期日并从浏览器中删除了所有cookie,但它不起作用。@SunilDevre-我只是从浏览器中删除了cookie,它对我起作用。听起来你的问题可能在别处。。。