

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

# 短信和电子邮件消息 MFA
<a name="user-pool-settings-mfa-sms-email-message"></a>

短信和电子邮件 MFA 消息确认用户在登录之前对消息目的地具有访问权限。用户确认他们不仅可以访问密码，还可以访问原始用户的短信或电子邮件收件箱。Amazon Cognito 要求用户提供用户池在成功提供用户名和密码后发送的短代码。

用户向其配置文件添加电子邮件地址或电话号码后，短信和电子邮件 MFA 无需额外配置。Amazon Cognito 可以向未经验证的电子邮件地址和电话号码发送消息。当用户完成第一个 MFA 时，Amazon Cognito 会将其电子邮件地址或电话号码标记为已验证。

当拥有 MFA 的用户在您的应用程序中输入他们的用户名和密码时，MFA 身份验证开始。您的应用程序使用调用[InitiateAuth](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)或 [AdminInitiateAuth](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API 请求的 SDK 方法提交这些初始参数。API 响应中的 `ChallengeParameters` 包括一个 `CODE_DELIVERY_DESTINATION` 值，指明发送授权码的位置。在您的应用程序中，显示一个表单，提示用户查看他们的手机，并包括一个输入框用于输入验证码。在他们输入验证码时，请在质询响应 API 请求中提交验证码以完成登录过程。

拥有 MFA 的用户在[托管登录](cognito-user-pools-managed-login.md)页面中使用用户名和密码登录后，系统会自动提示他们输入 MFA 验证码。

用户池使用您的 Amazon Web Services 账户中的 Amazon Simple Notification Service（Amazon SNS）资源发送 MFA 和其他 Amazon Cognito 通知的短信。同样，用户池使用您账户中的 Amazon Simple Email Service（Amazon SES）发送电子邮件消息。这些关联服务在您的邮件传送 Amazon 账单上自行产生费用。在以生产级别的规模发送消息时，还需要满足额外的要求。有关更多信息，请参阅以下链接：
+ [Amazon Cognito 用户池的短信设置](user-pool-sms-settings.md)
+ [全球短信定价](https://www.amazonaws.cn/sns/sms-pricing/)
+ [Amazon Cognito 用户池的电子邮件设置](user-pool-email.md)
+ [Amazon SES 定价](https://www.amazonaws.cn/ses/pricing)

## 短信和电子邮件消息 MFA 的注意事项
<a name="user-pool-settings-mfa-sms-email-message-considerations"></a>
+ 要允许用户使用电子邮件 MFA 登录，您的用户池必须具有以下配置选项：

  1. 您的用户池拥有增值版或基础版功能计划。有关更多信息，请参阅 [用户池功能计划](cognito-sign-in-feature-plans.md)。

  1. 您的用户池使用您自己的 Amazon SES 资源发送电子邮件消息。有关更多信息，请参阅 [Amazon SES 电子邮件配置](user-pool-email.md#user-pool-email-developer)。
+ MFA 验证码在您为应用程序客户端设置的**身份验证流程会话持续时间**内有效。

  当您**编辑**应用程序客户端时，需在 Amazon Cognito 控制台的**应用程序客户端**菜单中设置身份验证流程会话的持续时间。您还可以在 `CreateUserPoolClient` 或 `UpdateUserPoolClient` API 请求中设置身份验证流程会话持续时间。有关更多信息，请参阅 [身份验证会话示例](authentication.md#amazon-cognito-user-pools-authentication-flow)。
+ 当用户成功提供 Amazon Cognito 发送到未经验证的电话号码或电子邮件地址的短信或电子邮件中的验证码时，Amazon Cognito 会将相应的属性标记为已验证。
+ 要让用户自助更改与 MFA 关联的电话号码或电子邮件地址的值，他们必须使用访问令牌登录并授权请求。如果他们无法访问他们当前的电话号码或电子邮件地址，则无法登录。您的团队必须在 [AdminUpdateUserAttributes](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API 请求中使用管理员 Amazon 凭据更改这些值。
+ 在用户池中[配置短信](user-pool-sms-settings.md)后，即无法禁用将短信作为可用的 MFA 因素。