如果用户在 AWS Cognito TOTP AssociateSoftwareToken MFA 有效禁用后退出应用程序

Posted

技术标签:

【中文标题】如果用户在 AWS Cognito TOTP AssociateSoftwareToken MFA 有效禁用后退出应用程序【英文标题】:If user quits app after AWS Cognito TOTP AssociateSoftwareToken MFA effectively becomes disabled 【发布时间】:2020-12-10 23:37:33 【问题描述】:

我正在使用 AWS Cognito 开发用户应用程序,并且整个身份验证流程运行良好。但是,在一组独特的情况下,当用户指定他们想要使用 TOTP MFA(通过我的应用程序)时,我必须在他们的 Cognito 用户记录上调用“associateSoftwareToken”。这一切都很好,我生成了一个带有秘密的二维码并继续。但是,如果用户此时刚刚退出应用程序,Cognito 会显示他们的 MFA 已设置,但在身份验证回调中,我从未收到任何额外的 MFA 身份验证提示。好像 associateSoftwareToken 在 Cognito 中做的比我预期的要多。

我无法检测用户是否卡在这种状态以指导他们修复它,并且他们再也不会被定向到 MFA,这是一个问题,因为该网站上有 PII 和 EHR 信息。

有没有其他人遇到过这个问题并知道解决方法?在这一点上,我能想到的唯一解决方法是将软件机密存储在用户记录中,直到他们完成 TOTP 验证(或切换到 SMS 并完成)。

仅供参考,这是用 react 编写的,我正在使用 amazon-cognito-identity-js 库,但我不认为这种情况是语言/库所独有的。

【问题讨论】:

您找到解决方法了吗?卡在同一个地方。 我从未找到使用 amazon-cognito-identity-js no 的解决方法。我能想到的唯一选择是保留生成的秘密(并且他们需要验证它)直到他们真正做到。所以这将是一些额外的登录逻辑......但它会起作用。 【参考方案1】:

经过越来越多的摆弄,我得出结论,必须打电话给 set-user-mfa-preference 并在调用 associate-software-token 之前禁用软件令牌。 一旦 verify-software-token 调用成功,我将调用 set-user-mfa-preference 并启用和首选软件令牌。 通过这样做,我可以通过 get-user 调用的 UserMFAsettingList 结果检查 MFA 状态。

这种方法可能会导致用户启用了 MFA,但我不知道(我只会要求他们重新设置)。但它永远不会导致用户禁用了 MFA,但我认为他们启用了它。

【讨论】:

以上是关于如果用户在 AWS Cognito TOTP AssociateSoftwareToken MFA 有效禁用后退出应用程序的主要内容,如果未能解决你的问题,请参考以下文章

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

如何使用 AWS Cognito AmplifyAuthenticator 设置可选 MFA?

如何在 AWS Cognito 用户池中为特定用户编辑用户属性?

AWS Cognito lambda 触发两次

Aws cognito添加预定义用户

Aws cognito 添加预定义用户