amazon-web-services - AWS Cognito 在首次登录时不提示 MFA

我们有一个使用 AWS Cognito(+ 托管 Web UI)的应用程序,其中用户仅由管理员创建。需要带有 SMS 的 MFA。这是我们当前的新用户流程:

  1. 管理员使用 aws-sdk 的 AdminCreateUser 创建一个新用户。已提供电子邮件、姓名和电话号码。
  2. 创建了一个状态为 FORCE_CHANGE_PASSWORD 的新帐户。用户名和临时密码通过电子邮件发送给用户。
  3. 用户使用临时密码首次登录。
  4. Cognito 要求输入新密码。
  5. 用户设置新密码并继续登录。
  6. MFA 代码通过短信发送给用户。但是,Cognito 不会要求提供 MFA 代码。用户只需登录即可。帐户状态现在为 CONFIRMEDphone_number_verified 未设置。

但是,从第二次 登录开始,MFA 质询工作正常。换句话说,用户的电话号码只有在他们第二次成功登录时才会得到验证。这意味着在初始登录后忘记密码的用户无法重置密码(因为它需要经过验证的电话号码)。

知道为什么会这样吗?我应该查看哪些设置?我知道我可以通过编程方式将 phone_number_verified 设置为 true 来避免主要问题,但我想知道为什么 MFA 质询在首次登录时失败。

最佳答案

我对 AWS 托管的身份验证 UI 非常失望。它很丑陋而且非常有限。例如,正如您所发现的,它根本不处理 MFA。

我发现的最佳替代方法是使用 Authenticator Amplify UI 组件。可以在不使用 Amplify CLI 或在 AWS 上托管站点的情况下使用 Amplify UI,因此它是一个很好的嵌入式解决方案。 Authenticator 根据需要处理设置软件 TOTP token 和 TOTP 质询。我没有用它来发短信,但是this page表示它受支持。

您可以在 this StackOverflow answer 中了解如何独立使用 Amplify UI 组件(无需 CLI 和 AWS 托管) .

https://stackoverflow.com/questions/58990263/

相关文章:

android - 如何处理 "Don' t ask again”in while requesti

javascript - Vis js - 避免边缘重叠

mongoose - 是否有用于数据访问的 Mongoose 事件?

c# - 在C#中的rabbit Mq中获取xDeath中队列消息的最大重试次数

python - macOS : Access denied (insufficient permi

r - Googlesheets4 不读取我的电子表格

terraform - 错误 : Invalid template interpolation va

Python - 使用交互式 CLI 过滤列表

firebase - 解析错误 : 'import' and 'export' may appear

python - 使用 TorchScript 类作为 pytorch 模块中的成员