MFA添加到用户池 - Amazon Cognito

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MFA添加到用户池

多重身份验证 (MFA) 可提高应用程序的安全性。它将您具有的某种 身份验证要素添加到您已知的 用户名和密码要素中。您可以选择SMS短信或基于时间的一次性密码 (TOTP) 作为用户登录的其他因素。

注意

新用户首次登录您的应用程序时,Amazon Cognito 会发放 OAuth 2.0 令牌,即使您的用户池需要也是如此。MFA您的用户首次登录时的第二个身份验证因素是他们对 Amazon Cognito 发送给他们的验证消息的确认。如果您的用户池需要MFA,Amazon Cognito 会提示您的用户注册一个额外的登录系数,以便在第一次登录尝试之后的每次登录尝试中使用。

使用自适应身份验证,您可以将用户池配置为要求额外的身份验证因子,以应对风险级别的增加。要向用户池添加自适应身份验证,请参阅 用户池高级安全功能

当您将用户池设置MFArequired为时,所有用户都必须完成登录MFA才能登录。要登录,每位用户必须至少设置一个MFA因子。如果设置MFA为required,则必须将该MFA设置包含在用户入职中,这样您的用户池才允许他们登录。

MFA当您设置为必填项时,托管用户界面会提示用户MFA进行设置。当您在用户池中设置MFA为可选时,托管用户界面不会提示用户。要使用可选功能MFA,您必须在应用程序中构建一个界面,提示用户选择他们要设置的内容MFA,然后引导他们完成API输入以验证他们的额外登录系数。

MFA 的注意事项

在设置之前MFA,请考虑以下事项:

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

  • 在五次尝试呈现MFA代码失败后,Amazon Cognito 开始了指数超时锁定过程,如中所述。用户池身份验证流程

  • 如果您的账户位于包含您的用户池的 AWS 区域 亚马逊简单通知服务 (AmazonSNS) 资源的SMS沙箱中,则必须先验证亚马逊中的电话号码,SNS然后才能发送SMS消息。有关更多信息,请参阅 SMSAmazon Cognito 用户池的消息设置

  • 要使用高级安全功能更改用户MFA状态以响应检测到的事件,请在 Amazon Cognito 用户池控制台中将其激活MFA并设置为可选。有关更多信息,请参阅 用户池高级安全功能

  • 电子邮件和SMS消息要求您的用户分别具有电子邮件地址和电话号码属性。您可以在用户池中phone_number根据需要设置email或属性。在这种情况下,除非用户提供电话号码,否则他们无法完成注册。如果您没有按要求设置这些属性,而是想发送电子邮件或发送SMS消息MFA,则可以在用户注册时提示他们输入电子邮件地址或电话号码。最佳做法是将您的用户池配置为自动向用户发送消息以验证这些属性

    如果用户通过SMS消息成功收到临时验证码并在请求中返回了该验证码,则 Amazon Cognito 会将该电话号码视为已验证。VerifyUserAttributeAPI或者,您的团队可以设置电话号码,并使用执行AdminUpdateUserAttributesAPI请求的管理应用程序将其标记为已验证。

  • 如果您已设置MFA为必填项,并且激活了多个身份验证因子,Amazon Cognito 会提示新用户选择他们想要使用的验证MFA因子。用户必须有电话号码才能设置SMS消息MFA,必须有电子邮件地址才能设置电子邮件MFA。如果用户没有为任何可用的基于消息MFA的属性定义,Amazon Cognito 会提示他们进行设置。TOTP MFA选择MFA因子 (SELECT_MFA_TYPE) 和设置选定因子 (MFA_SETUP) 的提示是对挑战InitiateAuthAdminInitiateAuthAPI操作的响应。

用户MFA偏好

用户可以设置多个MFA因子。只有一个可以处于活动状态。您可以在用户池设置或用户提示中为用户选择有效的MFA首选项。当用户池设置和他们自己的用户级设置满足以下条件时,用户池会提示用户输入MFA代码:

  1. 在用户池中设置MFA为可选或必填项。

  2. 用户具有有效的emailphone_number属性,或者已经为其设置了身份验证器应用程序。TOTP

  3. 至少有一个MFA因子处于活动状态。

  4. 其中一个MFA因子被设置为首选。

关于MFA偏好的注意事项

用户池的配置会影响用户可以选择MFA的方法。以下是一些影响用户设置MFA首选项能力的用户池设置:

  • 在 Amazon Cognito 控制台登录体验选项卡的多重身份验证配置中,您可以将其MFA设置为可选或必选,也可以将其关闭。该设置的API等效MfaConfiguration参数是CreateUserPoolUpdateUserPool、和的参数SetUserPoolMfaConfig

    同样在多因素身份验证配置中,MFA方法设置决定了用户可以设置的MFA因素。与该设置API等效的是SetUserPoolMfaConfig操作。

    在 “用户帐户恢复” 下的 “登录体验” 选项卡中,您可以配置用户池向忘记密码的用户发送消息的方式。用户的首选MFA方法不能与用户池中优先级最高的恢复邮件传递方法相同。和的AccountRecoverySetting参数API等同于此配置UpdateUserPoolCreateUserPool

    例如,如果您的恢复选项MFA为 “仅限电子邮件” 或 “电子邮件”(如果可用),则用户无法将电子邮件设置为首选SMS。将配送方式更改为 “SMS仅限” 或 “SMS如果可用”,否则请发送电子邮件

  • 如果您只将一种MFA方法设置为可用,则无需管理用户MFA首选项。

  • 活动SMS配置会自动使SMS消息成为用户池中的可用MFA方法。

    用户池中包含您自己的 Amazon SES 资源的活跃电子邮件配置以及有效的高级安全功能,可自动使电子邮件成为用户池中的可用MFA方法。

  • 当您在用户池中设置MFA为必填时,用户无法启用或禁用任何MFA方法。您只能设置首选方法。

  • 当您在用户池中设置MFA为可选时,托管用户界面不会提示用户进行设置MFA,但是当用户有首选MFA方法时,它会提示用户输入MFA代码。

  • 当您激活高级安全功能并在全功能模式下配置自适应身份验证响应时,在您的用户池中MFA必须是可选的。自适应身份验证的响应选项之一是,要求其登录尝试被评估MFA为包含一定风险级别的用户。

    控制台 “注册体验” 选项卡中的 “必填属性” 设置决定了用户是否必须提供电子邮件地址或电话号码才能在您的应用程序中注册。当用户拥有相应属性时,电子邮件和SMS消息就会成为符合条件的MFA因素。的 Schema 参数根据需要CreateUserPool设置属性。

  • 当您在用户池中设置MFA为必填并且用户使用托管用户界面登录时,Amazon Cognito 会提示他们从用户池的可用方法中选择MFA一种方法。托管用户界面处理电子邮件地址或电话号码的收集以及设置TOTP。

API用于配置MFA首选项的操作

您可以为具有访问令牌授权的自助服务模式中的用户配置MFA首选项,也可以为具有管理操作的管理员管理模式中的用户配置首选项。API这些操作启用或禁用MFA方法,并将多种方法中的一个设置为首选选项。在您的用户设置MFA首选项后,Amazon Cognito 会在登录时提示他们提供来自他们首选方法的代码。MFA未设置首选项的用户会收到在SELECT_MFA_TYPE挑战中选择首选方法的提示。

  • 在用户自助服务模式或公共应用程序中 SetUserMfaPreference,使用登录用户的访问令牌进行授权,设置配置。MFA

  • 在管理员管理的应用程序或机密应用程序中,使用管理 AWS 凭据进行授权 AdminSetUserPreference,可以设置配置。MFA

您也可以从 Amazon Cognito 控制台的 “用户” 选项卡中设置用户MFA首选项。有关 Amazon Cognito 用户池中的公共和机密身份验证模型的更多信息API,请参阅。使用用户池API和授权服务器

为多因素身份验证配置用户池

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

在 Amazon Cognito 控制台MFA中进行配置
  1. 登录 Amazon Cognito 控制台

  2. 选择用户池

  3. 从列表中选择一个现有用户池,或创建一个用户池

  4. 选择登录体验选项卡。找到多重身份验证,然后选择编辑

  5. 选择要用于用户池的MFA强制方法。

    通知用户
    1. 需要MFA。用户池中的所有用户都必须使用附加SMS代码或基于时间的一次性密码 (TOTP) 进行登录。

    2. 可选 MFA-您可以让用户选择注册额外的登录系数,但仍允许尚未配置MFA的用户登录。如果您使用自适应身份验证,请选择此选项。有关自适应身份验证的更多信息,请参阅用户池高级安全功能

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

  6. 选择您在应用程序中支持的MFA方法。您可以将电子邮件、SMS消息或TOTP生成身份验证器应用程序设置为第二个因素。

  7. 如果您使用SMS短信作为第二要素,但尚未配置要在亚马逊简单通知服务 (AmazonSNS) 中使用的SMS消息IAM角色,请在控制台中创建一个角色。在用户池的 “消息” 选项卡中,找到SMS并选择编辑。您还可以使用允许 Amazon Cognito 为您向用户发送SMS消息的现有角色。有关更多信息,请参阅 IAM 角色

  8. 选择 Save changes(保存更改)