问题描述
我正在使用AWS Cognito开发用户应用程序,并且整个身份验证流程都运行良好。但是,在一组特殊情况下,当用户指定他们要(通过我的应用程序)使用TOTP MFA时,我必须在其Cognito用户记录上调用“ associateSoftwaretoken”。一切正常,我生成了带有密码的QR码,然后继续。但是,如果用户此时仅退出应用程序,则Cognito会显示其MFA已设置,但在auth回调中,我从不提示进行任何其他MFA身份验证。好像associateSoftwaretoken在Cognito内部做的比我预期的要多。
我找不到方法来检测用户是否陷入这种状态以指导他们进行修复,而他们再也没有直接指向MFA,这是一个问题,因为该站点上具有PII和EHR信息。
其他人是否遇到过此问题并知道解决方法?此时,我能想到的唯一解决方法是将软件秘密存储在用户记录中,直到他们完成TOTP验证(或切换到SMS并完成)。
仅供参考,这是用react编写的,我正在使用amazon-cognito-identity-js库,但是我不认为这种情况是语言/库所独有的。
解决方法
经过越来越多的摆弄,我得出的结论是必须打电话 set-user-mfa-preference 并在调用 associate-software-token 之前禁用软件令牌。 一旦 verify-software-token 调用成功,我将调用 set-user-mfa-preference 并启用&首选软件令牌。 通过这样做,我可以通过 get-user 调用的 UserMFAsettingList 结果检查 MFA 状态。
这种方法可能会导致用户启用了 MFA,但我不知道(我只会要求他们重新设置)。但它永远不会导致禁用 MFA 但我认为他们启用了它的用户。