AWS Amplify/Cognito - 一种仅在用户首次登录时设置 TOTP MFA 的方法

Posted

技术标签:

【中文标题】AWS Amplify/Cognito - 一种仅在用户首次登录时设置 TOTP MFA 的方法【英文标题】:AWS Amplify/Cognito- a way to set TOTP MFA on first time user login only 【发布时间】:2021-09-10 03:55:56 【问题描述】:

我正在设置 MFA 不是可选的身份验证,这意味着从注册后的第一次登录尝试开始,用户将被要求设置 MFA(在这种情况下,我将使用基于时间的一次性密码,或顶部)。为此,我可以看到以下步骤是合理的:

1)通过登录表单获取用户信息-Auth.signUp()

2) 从步骤 1) 中检索到的用户数据确定是否已经为用户设置了基于 TOPT 的 MFA。如果没有,请转到第 3 步)或第 4 步)

3)如果未设置 TOPT,则重定向到将生成 QRCode 的表单以设置此 MFA 功能。验证码后,登录用户。

4) 如果设置了 TOPT,请询问密码。验证后,登录用户。

我的困境:似乎我无法获得步骤 2) 中的信息,即是否已经为用户设置了基于 TOPT 的 MFA,而用户尚未经过身份验证。在步骤 1 中通过 Auth.signUp() 在有效负载中检索到的标志 challengeName 仅提供有关是否启用 MFA ('MFA_SETUP') 的信息,而不是是否已经设置了基于 TOTP 的 MFA。为此,Auth.getPreferredMFA() 方法可以解决问题,但它仅在传递给它的用户对象代表经过身份验证(或已登录)的用户时才有效。有没有办法确定是否为尝试登录(但尚未登录)的用户设置了 TOTP MFA?

此外,任何其他解决此问题的解决方案都将受到欢迎。肯定有人遇到了与我相同的情况,即从第一次登录本身就强制执行 MFA。

【问题讨论】:

【参考方案1】:

我也面临同样的问题。如果需要 MFA,我会打开一个模式来显示 QR 码并为用户设置 mfa。

代码:“NotAuthorizedException” 消息:“用户的会话无效。” 名称:“NotAuthorizedException”

但由于用户尚未登录并尚未创建任何访问令牌而收到此错误。

我解决这个问题的想法实际上是登录用户,但让他们的权限不超出 SetupMFA 屏幕,这样他们只有在完成设置后才能获得一些权限。

你自己有进步吗?我想听听任何解决方案。

【讨论】:

以上是关于AWS Amplify/Cognito - 一种仅在用户首次登录时设置 TOTP MFA 的方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 aws amplify cognito 的自定义身份验证流程

AWS Amplify Cognito 中的禁用用户仍然可以访问 API 中的数据

Flutter 和 Amplify/Cognito:如何使用 Flutter 更新 Amplify/cognito 中的电话号码

一种仅用于频繁值的热编码

一种仅在非移动设备上使用 CSS 类的方法 [重复]

被丑恶化的食人花,不过是一种仅剩生殖器官的可怜奇葩植物