向用户池添加 MFA - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

向用户池添加 MFA

多重验证 (MFA) 可增强应用程序的安全性。它将您具有的某种 身份验证要素添加到您已知的 用户名和密码要素中。您可以选择将 SMS 文本消息或基于时间的一次性密码 (TOTP) 作为用户登录的第二安全要素。

借助自适应身份验证,可以将用户池配置为响应增加的风险级别需要第二安全要素身份验证。要向用户池添加自适应身份验证,请参阅 向用户池添加高级安全

将用户池的 MFA 设置为 required 时,所有用户都必须完成 MFA 才能登录。要登录,每个用户至少设置一个 MFA 安全要素,例如 SMS 或 TOTP。当您将 MFA 设置为 required 时,您必须在用户登录中包含 MFA 设置,以便您的用户池允许他们登录。

如果您激活 SMS 作为 MFA 安全要素,则可以要求用户提供电话号码并在注册过程中进行验证。如果您将 MFA 设置为 required 并且只支持 SMS 作为安全要素,则用户需要提供一个电话号码。没有电话号码的用户将需要您的支持才能将电话号码添加到其个人资料中,然后才能登录。您可以将未经验证的电话号码用于 SMS MFA。MFA 成功后,这些号码的状态将为已验证。

如果您已将 MFA 设置为 required 并且激活了 SMS 和 TOTP 作为支持的验证方法,Amazon Cognito 会提示没有电话号码的新用户设置 TOTP MFA。如果您已将 MFA 设置为 required 而且您唯一激活的 MFA 方法是 TOTP,Amazon Cognito 会提示所有新用户在第二次登录时设置 TOTP MFA。Amazon Cognito 生成质询以设置 TOTP MFA,作为对 InitiateAuthadmin iateAuth API 操作的响应。

先决条件

在设置 MFA 之前,请考虑以下情况:

  • 在旧版 Amazon Cognito 控制台中,最初创建用户池时只能将 MFA 设置为 Required(必需)。可切换到新控制台或使用 SetUserPoolMfaConfig API 操作,为现有用户池将 MFA 设置为 required

  • 当您在用户池中激活 MFA 并选择 SMS text message(SMS 文本消息)作为第二安全要素时,您可以向尚未在 Amazon Cognito 中验证的电话号码属性发送短信。用户完成短信 MFA 后,Amazon Cognito 会将其 phone_number_verified 属性设置为 true

  • 如果您的账户所在的 SMS 沙盒,位于包含用户池的 Amazon Simple Notification Service (Amazon SNS) 资源的 Amazon Web Services 区域中,您必须在 Amazon SNS 中验证电话号码,然后才能发送短信。有关更多信息,请参阅 Amazon Cognito 用户池的短信设置

  • 高级安全功能要求您已激活 MFA 并在 Amazon Cognito 用户池控制台中将其设置为可选。有关更多信息,请参阅 向用户池添加高级安全

配置多重验证

您可以在 Amazon Cognito 控制台中配置 MFA。

Original console

在 Amazon Cognito 控制台中配置 MFA

  1. 从左侧导航栏中,选择 MFA 和验证

  2. 选择 MFA 处于关闭可选还是必需状态。

    
                    通知用户
  3. 在按用户激活 MFA 时,或者在您使用基于风险的自适应身份验证时,选择 Optional(可选)。有关自适应身份验证的更多信息,请参阅 向用户池添加高级安全

  4. 选择要在应用程序中支持的第二安全要素。用户可以使用短信基于时间的一次性密码作为第二安全要素。我们建议使用 TOTP,这样您可以使用 SMS 作为密码恢复机制,而不是作为身份验证安全要素。

  5. 如果您使用 SMS 文本消息作为第二安全要素并且未定义具有此权限的 IAM 角色,则可在控制台中创建一个此角色。选择 Create role(创建角色)以创建允许 Amazon Cognito 代表您向用户发送 SMS 消息的 IAM 角色。有关更多信息,请参阅 IAM 角色

  6. 选择保存更改

New console

在 Amazon Cognito 控制台中配置 MFA

  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池,或 create a user pool(创建用户池)。

  4. 选择 Sign-in experience(登录体验)选项卡。找到 Multi-factor authentication(多重验证),然后选择 Edit(编辑)

  5. 选择您希望用于用户池的 MFA enforcement(MFA 执行)方法。

    1. Require MFA(需要 MFA)。用户池中的所有用户必须使用其他 SMS 代码或基于时间的一次性密码(TOTP)安全要素进行登录。

    2. Optional MFA(可选 MFA)– 您可以为用户提供选项来注册额外的登录安全要素,但仍允许未配置 MFA 的用户登录。如果您使用自适应身份验证,请选择此选项。有关自适应身份验证的更多信息,请参阅 向用户池添加高级安全

    3. No MFA(无 MFA)。您的用户无法注册其他登录安全要素。

  6. 选择您在应用程序中支持的 MFA methods(MFA 方法)。您可以设置 SMS message(SMS 消息)或带 TOTP 的 Authenticator apps(身份验证器应用程序)作为第二安全因素。我们建议您实施基于 TOTP 的 MFA,这样可以使用 SMS 消息找回账户的密码。

  7. 如果使用 SMS 文本消息作为第二安全要素,并且没有配置 IAM 角色与 Amazon Simple Notification Service (Amazon SNS) 一起使用 SMS 消息,您可以在控制台中创建一个角色。在用户池的 Messaging(消息收发)选项卡下,找到SMS 并选择 Edti(编辑)。您还可以使用允许 Amazon Cognito 代表您向用户发送短信的现有角色。有关更多信息,请参阅 IAM 角色

  8. 选择保存更改