使用电子邮件 TOTP 的 AWS Cognito 自定义身份验证流程:如何记住设备并设置一次性密码的过期时间?

Kid*_*g_C 6 amazon-web-services amazon-cognito multi-factor-authentication

我已按照此 AWS 博客使用电子邮件 TOTP(基于时间的一次性密码)作为 MFA 为我的网站实施自定义身份验证流程: https ://aws.amazon.com/blogs/mobile/extending-amazon-cognito-with -email-otp-for-2fa-using-amazon-ses/

基本上它解释了在 Cognito 上如何使用CUSTOM_CHALLENGE和 3 lambda 函数来:

  1. 定义自定义身份验证挑战
  2. 创建自定义身份验证质询代码并通过 AWS SES 发送到用户的电子邮件地址;
  3. 验证用户提交的验证码是否正确;

这样我们就可以达到与基于短信的 MFA 相同的效果,只不过代码是作为电子邮件而不是手机上的短信发送的。

请注意,这与 Cognito 用户池设置中的“MFA”部分非常不同:

在此输入图像描述

上述 MFA 适用于手机短信。

遵循博客教程后,我的工作进展顺利。

但是我有两个问题,在网上找不到解决方案:

  1. 如何设置发送到用户电子邮件的一次性密码的过期时间?\

    我确信有一个过期时间,并且我相信它是 10 分钟,但文档却找不到。

  2. 如何允许 cognito 记住该设备,以便仅当用户尝试从与之前设备不同的设备登录时才需要将电子邮件 TOTP 作为第二因素?

对于 Cognito 设置上基于文本消息的 MFA(或“真正的”MFA),只需在“设备”部分启用即可轻松实现:

Do you want to use a remembered device to suppress the second factor during multi-factor authentication (MFA)?
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,对于为 2FA 实现电子邮件 OTP 的方法,我该如何执行此操作?