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



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

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从第一次登录开始就是强制性的。

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

代码:";NotAuthorizedException";消息:";用户的会话无效"名称:";NotAuthorizedException";

但由于用户尚未登录并创建任何访问令牌,因此出现此错误。

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

你自己进步了吗?我希望听到任何解决方案。

最新更新