本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向用户池添加 MFA
MFA 将您具有的某种 身份验证因素添加到您已知的 初始因素(通常是用户名和密码)中。您可以选择 SMS 短信、电子邮件或基于时间的一次性密码 (TOTP) 作为其他因素,以密码作为主要身份验证因素的用户登录。
多重身份验证(MFA)可提高应用程序中本地用户的安全性。对于联合用户,Amazon Cognito 会将所有身份验证过程委托给 IdP,并且不会为他们提供额外的身份验证因素。
注意
即使您的用户池需要 MFA,新用户首次登录您的应用程序时,Amazon Cognito 也会发放 OAuth 2.0 令牌。您的用户首次登录时的第二个身份验证因素是他们对 Amazon Cognito 发送给他们的验证消息的确认。如果您的用户池要求使用 MFA,Amazon Cognito 会提示您的用户注册一个额外的登录因素,以便在第一次之后的每次登录尝试期间使用。
借助自适应身份验证,可以将用户池配置为响应增加的风险级别需要额外的身份验证因素。要向用户池添加自适应身份验证,请参阅 具有威胁防护功能的高级安全性。
将用户池的 MFA 设置为 required
时,所有用户都必须完成 MFA 才能登录。要登录,每个用户至少设置一个 MFA 安全因素。如果需要 MFA,则必须在用户入职中包含 MFA 设置,这样您的用户池才允许他们登录。
当您将 MFA 设置为必填项时,托管登录会提示用户设置 MFA。当您在用户池中将 MFA 设置为可选时,托管登录不会提示用户。要使用可选的 MFA,您必须在应用程序中构建一个界面,以提示用户选择他们需要设置 MFA,然后引导他们完成 API 输入以验证他们的额外登录因素。
关于用户池 MFA 的注意事项
在设置 MFA 之前,请考虑以下情况:
-
您的用户池中可以有必需的 MFA 或无密码登录系数。在支持一次性密码或密钥的用户池中,您不能将 MFA 设置为必填项。您无法使用需要 MF A 的用户池中的USER_AUTH流程激活基于选择的登录。
-
用户首选 MFA 方法会影响他们可用于恢复密码的方法。首选 MFA 方式为电子邮件的用户无法通过电子邮件接收密码重置代码。首选 MFA 方式为短信的用户无法通过短信接收密码重置代码。
当用户不符合条件,无法使用首选密码重置方法时,您的密码恢复设置必须提供替代选项。例如,您的恢复机制可能将电子邮件列为第一优先选项,而电子邮件 MFA 可能是您的用户池中的一个选项。在这种情况下,添加短信消息账户恢复作为第二个选项,或者使用管理 API 操作为这些用户重置密码。
-
用户无法通过相同的电子邮件地址或电话号码接收 MFA 和密码重置码。如果他们使用电子邮件中的一次性密码 (OTPs) 进行 MFA,则必须使用 SMS 消息进行账户恢复。如果他们使用来 OTPs 自 SMS 消息的 MFA,则必须使用电子邮件进行账户恢复。在具有 MFA 的用户池中,如果用户有电子邮件地址的属性但没有电话号码,或者有电话号码但没有电子邮件地址,则他们可能无法完成自助密码恢复。
要防止出现用户无法在使用此配置的用户池中重置密码的状态,请根据需要设置email和phone_number属性。或者,您可以设置在用户注册或管理员创建用户配置文件时始终收集和设置这些属性的流程。当用户同时拥有这两个属性时,Amazon Cognito 会自动向目标发送密码重置代码,该代码不是用户的 MFA 因子。
-
当您在用户池中激活 MFA 并选择短信或电子邮件作为第二个因素时,您可以向尚未在 Amazon Cognito 中验证的电话号码或电子邮件属性发送消息。在您的用户完成 MFA 后,Amazon Cognito 会
phone_number_verified
将其或属性设置为。email_verified
true
-
在五次尝试提交 MFA 代码均未成功后,Amazon Cognito 会开始如登录尝试失败时的锁定行为中所描述的指数超时锁定过程。
-
如果您的账户位于包含您的用户池的亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 资源的短信沙箱中,则必须先验证亚马逊 SNS 中的电话号码,然后才能发送短信。 AWS 区域 有关更多信息,请参阅 Amazon Cognito 用户池的短信设置。
-
要使用威胁防护更改用户的 MFA 状态以响应检测到的事件,请在 Amazon Cognito 用户池控制台中激活 MFA 并将其设置为可选。有关更多信息,请参阅 具有威胁防护功能的高级安全性。
-
电子邮件和短信消息要求您的用户分别具有电子邮件地址和电话号码属性。您可以在用户池中将
email
或phone_number
设置为必需的属性。在这种情况下,除非用户提供电话号码,否则他们无法完成注册。如果您未将这些属性设置为必需,但想要进行电子邮件或短信消息 MFA,则可以在用户注册时提示他们输入电子邮件地址或电话号码。妥善的做法是将用户池配置为自动向用户发送消息来验证这些属性。如果用户通过短信或电子邮件成功接收了临时验证码,并在 VerifyUserAttributeAPI 请求中返回了该验证码,则 Amazon Cognito 会将电话号码或电子邮件地址视为已验证。或者,您的团队可以设置电话号码,并使用执行 AdminUpdateUserAttributesAPI 请求的管理应用程序将其标记为已验证。
-
如果您已将 MFA 设置为必需且激活了多个身份验证因素,则 Amazon Cognito 会提示新用户选择他们想要使用的 MFA 因素。用户必须有电话号码才能设置短信消息 MFA,必须有电子邮件地址才能设置电子邮件消息 MFA。如果用户没有为任何基于消息的可用 MFA 定义属性,则 Amazon Cognito 会提示他们设置 TOTP MFA。选择 MFA 因子 (
SELECT_MFA_TYPE
) 和设置所选因子 (MFA_SETUP
) 的提示是对InitiateAuth和 AdminInitiateAuthAPI 操作的质询响应。
用户 MFA 首选项
用户可以设置多个 MFA 因素。只能激活一个因素。您可以在用户池设置中或从用户提示为用户选择有效的 MFA 首选项。当用户池设置和他们自己的用户级设置满足以下条件时,用户池会提示用户输入 MFA 验证码:
-
您可以在用户池中将 MFA 设置为可选或必需。
-
用户具有有效的
email
或phone_number
属性,或者已为 TOTP 设置身份验证器应用程序。 -
至少有一个 MFA 因素处于活动状态。
-
一个 MFA 因素设置为首选。
用户池设置及其对 MFA 选项的影响
用户池的配置会影响用户可以选择的 MFA 方法。以下是一些影响用户设置 MFA 能力的用户池设置。
-
在 Amazon Cognito 控制台登录菜单的多重身份验证配置中,您可以将 MFA 设置为可选或必选,也可以将其关闭。与此设置的 API 等效项是
CreateUserPool
UpdateUserPool
、和的MfaConfiguration参数SetUserPoolMfaConfig
。此外,在多重身份验证配置中,MFA 方法设置决定了用户可以设置的 MFA 因素。与该设置相当的 API 就是SetUserPoolMfaConfig操作。
-
在登录菜单的用户帐户恢复下,您可以配置用户池向忘记密码的用户发送消息的方式。用户的 MFA 方法不能与忘记密码代码的用户池传送方法相同。忘记密码传送方法的 API 参数是和的AccountRecoverySetting参数。
CreateUserPool
UpdateUserPool
例如,当您的恢复选项为 “仅限电子邮件” 时,用户无法设置电子邮件 MFA。这是因为您无法在同一个用户池中启用电子邮件 MFA 并将恢复选项设置为 “仅限电子邮件”。当您将此选项设置为 “电子邮件”(如果可用),否则设置为 “短信” 时,电子邮件是优先恢复选项,但是当用户没有资格恢复电子邮件时,您的用户池可以回退到 SMS 消息。在这种情况下,用户可以将电子邮件 MFA 设置为首选,并且只有在尝试重置密码时才能收到 SMS 消息。
-
如果您只将一种 MFA 方法设置为可用,则无需管理用户 MFA 首选项。
-
激活的短信配置会自动使短信成为用户池中的可用 MFA 方法。
用户池中包含您自己的 Amazon SES 资源的活跃电子邮件配置,以及 Essentials 或 Plus 功能计划,会自动使电子邮件成为用户池中可用的 MFA 方法。
-
在用户池中将 MFA 设置为必需时,用户无法启用或禁用任何 MFA 方法。您只能设置首选方法。
-
当您在用户池中将 MFA 设置为可选时,托管登录不会提示用户设置 MFA,但是当用户有首选 MFA 方法时,它会提示用户输入 MFA 代码。
-
在全功能模式下激活威胁防护并配置自适应身份验证响应时,MFA 在您的用户池中必须是可选的。自适应身份验证的其中一个响应选项是要求其登录尝试被评估为包含一定风险级别的用户进行 MFA。
控制台注册菜单中的 “必填属性” 设置决定了用户是否必须提供电子邮件地址或电话号码才能注册您的应用程序。当用户具有相应属性时,电子邮件和短信将成为符合条件的 MFA 因素。
CreateUserPool
的 Schema 参数根据需要设置属性。 -
当您在用户池中将 MFA 设置为必填且用户使用托管登录登录时,Amazon Cognito 会提示他们从用户池的可用方法中选择一种 MFA 方法。托管登录处理电子邮件地址或电话号码的收集以及 TOTP 的设置。
用于配置 MFA 首选项的 API 操作
您可以在具有访问令牌授权的自助服务模式中为用户配置 MFA 首选项,或者在具有管理 API 操作的管理员管理模式中为用户配置 MFA 首选项。这些操作启用或禁用 MFA 方法,并将多种方法之一设置为首选选项。在用户设置 MFA 首选项后,Amazon Cognito 会在登录时提示他们提供来自他们首选 MFA 方法的验证码。未设置首选项的用户会收到在 SELECT_MFA_TYPE
质询中选择首选方法的提示。
-
在用户自助服务模式或公共应用程序中 SetUserMfaPreference,使用登录用户的访问令牌进行授权,设置 MFA 配置。
-
在管理员管理的应用程序或机密应用程序中,使用管理 AWS 凭证进行授权 AdminSetUserPreference,设置 MFA 配置。
您还可以从 Amazon Cognito 控制台的 “用户” 菜单中设置用户 MFA 首选项。有关 Amazon Cognito 用户池 API 中的公共和机密身份验证模式的更多信息,请参阅了解 API、OIDC 和托管登录页面身份验证。
为多重身份验证配置用户池
您可以在 Amazon Cognito 控制台中配置 MFA。
在 Amazon Cognito 控制台中配置 MFA
-
选择用户池。
-
从列表中选择一个现有用户池,或创建一个用户池。
-
选择 “登录” 菜单。找到多重身份验证并选择编辑。
-
选择您希望用于用户池的MFA 强制执行方法。
-
需要 MFA。用户池中的所有用户都必须使用额外的短信、电子邮件或基于时间的一次性密码 (TOTP) 代码作为额外的身份验证因素登录。
-
可选 MFA。您可以为用户提供注册额外登录系数的选项,但仍允许尚未配置 MFA 的用户登录。如果您使用自适应身份验证,请选择此选项。有关自适应身份验证的更多信息,请参阅具有威胁防护功能的高级安全性。
-
无 MFA。您的用户无法注册其他登录安全要素。
-
-
选择您在应用程序中支持的 MFA 方法。您可以将电子邮件消息、短信或 TOTP 生成的身份验证器应用程序设置为第二个因素。
-
如果使用 SMS 文本消息作为第二安全要素,并且没有配置 IAM 角色与 Amazon Simple Notification Service(Amazon SNS)一起使用 SMS 消息,您可以在控制台中创建一个角色。在用户池的 “身份验证方法” 菜单中,找到 “短信”,然后选择 “编辑”。您还可以使用允许 Amazon Cognito 代表您向用户发送短信的现有角色。有关更多信息,请参阅 IAM 角色。
如果您使用电子邮件作为第二个因素,但尚未将原始身份配置为与亚马逊简单电子邮件服务 (Amazon SES) Service 一起用于发送电子邮件,请在控制台中创建一个。您必须选择 “使用 SES 发送电子邮件” 选项。在用户池的 “身份验证方法” 菜单中,找到 “电子邮件”,然后选择 “编辑”。从列表中可用的已验证身份中选择一个 FROM 电子邮件地址。例如,如果您选择经过验证的域
example.com
,则还必须在经过验证的域中配置 FROM 发件人姓名admin-noreply@example.com
。 -
选择 Save changes(保存更改)。