AWS Cognito - 启用 MFA |错误:如果配置了 SMS 角色,则无法关闭 MFA

Posted

技术标签:

【中文标题】AWS Cognito - 启用 MFA |错误:如果配置了 SMS 角色,则无法关闭 MFA【英文标题】:AWS Cognito - Enabling MFA | Error: MFA cannot be turned off if an SMS role is configured 【发布时间】:2018-11-13 20:18:12 【问题描述】:

我正在尝试为现有 AWS Cognito 用户池启用 MFA。 我正在编辑用户池配置,但尝试保存新配置会导致 MFA cannot be turned off if an SMS role is configured 错误(见图)。我不明白那个错误信息,Google 也帮不上忙。

问题:我做错了什么,如何为现有用户池启用 MFA?

【问题讨论】:

您使用的是哪个 aws 区域? 爱尔兰(eu-west-1) 奇怪,我猜你已经为 MFA 选择了可选的。就我而言,它在 eu-central-1 中不起作用,但对于 eu-west-1 没关系。 您可能还需要提高 AWS 每月支出限额。 SNS消费限额已经提高了,我觉得不是问题。我通过导出所有用户、创建启用 MFA 的新用户池然后导入用户解决了这个问题。如果系统包含许多用户和高流量,则此解决方案可能不理想。 【参考方案1】:

SNSRole 是自动添加的,不能通过任何可用参数更改,以后也不能修改。当前的解决方法是手动修改 yaml 配置并删除该部分。

放大添加授权 完成所有配置 打开文件 backend/auth//-cloudformation-template.yml 在 Resources > UserPool > Properties 中删除 Resources 和 SmsConfiguration 中的 SNSRole 行 放大推送

来自:https://github.com/aws-amplify/amplify-js/issues/2906

【讨论】:

这条路好像不存在了。我在我的项目中找不到它。 @Min 你确定吗?路径取决于您选择的名称。 是的,我确定。这就是我所看到的: amplify/backend/auth//build/-cloudformation-template.json 。我从这个 json 模板中删除了提到的资源,但它没有检测到任何变化。看来你提到了不同的补丁,你的模板是 yml【参考方案2】:

提供的解决方案(手动删除角色)对我不起作用。

我从放大 cli 中找到了解决方案。

运行这个

amplify update auth

其中一个问题是您是否要禁用 MFA。 然后

amplify push auth

将您的更改移动到云端

【讨论】:

【参考方案3】:

转到 IAM 并确保您没有意外创建 SMS 角色。 台阶下:

You must provide a role to allow Amazon Cognito to send SMS messages

如果您按创建角色,那么这将产生您提到的错误。我想为了继续,您需要正确配置您的 SMS。

为了解决这个问题,我必须删除一个链接到我的用户池的 SMS 角色 (IAM)

因此,通过删除 SMS 角色,我能够继续创建新的用户池。

您可以通过登录控制台来做到这一点。转到仪表板下方左侧的 IAM 转到 Roles。从列表中选择与您的用户池关联的 SMS 角色并将其删除。

【讨论】:

3 年后,令人难以置信的是他们让这个过程变得如此困难

以上是关于AWS Cognito - 启用 MFA |错误:如果配置了 SMS 角色,则无法关闭 MFA的主要内容,如果未能解决你的问题,请参考以下文章

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

在 AWS Cognito 中为 MFA 配置自定义 SMS 消息

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

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

带有 SMS MFA 的无密码 Cognito

AWS 账户MFA启用流程