我正在设置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屏幕,这样他们只有在完成设置后才能获得一些权限。
你自己进步了吗?我希望听到任何解决方案。