我们有一个使用 AWS Cognito(+ 托管 Web UI)的应用程序,其中用户仅由管理员创建。需要带有 SMS 的 MFA。这是我们当前的新用户流程:
AdminCreateUser
创建一个新用户。已提供电子邮件、姓名和电话号码。FORCE_CHANGE_PASSWORD
的新帐户。用户名和临时密码通过电子邮件发送给用户。CONFIRMED
但 phone_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/