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 中的电话号码