配置 SMS 和电子邮件验证消息以及用户邀请消息 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置 SMS 和电子邮件验证消息以及用户邀请消息

借助 Amazon Cognito,您可以自定义短信和电子邮件验证消息以及用户邀请消息,以增强应用程序的安全性和用户体验。借助 Amazon Cognito,您可以在基于代码的验证或一键式链接验证之间进行选择,以满足您的应用程序需求。本主题讨论如何在 Amazon Cognito 控制台中对多因素身份验证 (MFA) 和验证通信进行个性化设置。

消息收发选项卡的消息模板下,您可以自定义:

  • 您的 SMS 短信多重身份验证(MFA)消息

  • 您的 SMS 和电子邮件验证消息

  • 电子邮件的验证类型–代码或链接

  • 您的用户邀请消息

  • 流经用户池的电子邮件的 FROM 和 REPLY-TO 电子邮件地址

注意

只有在验证选项卡上选择要求进行电话号码和电子邮件验证之后,才会显示 SMS 和电子邮件验证消息模板。同样,只有 MFA 设置为 required(必填)或 optional(可选)时,才会显示 SMS MFA 消息模板。

消息模板

您可以使用消息模板在消息中插入占位符。Amazon Cognito 将占位符替换为相应的值。您可以在任何类型的消息模板中引用通用模板占位符,尽管这些值不会出现在所有消息类型中。

通用模板占位符

描述

令牌

消息类型
验证代码 {####} 验证、确认和 MFA 消息
临时密码 {####} 忘记密码和邀请消息
用户名称 {username} 邀请和高级安全消息

具有高级安全功能的可用自动响应之一是通知用户 Amazon Cognito 检测到潜在的恶意活动。您可以使用高级安全模板占位符执行以下操作:

  • 包括某个事件的特定详细信息,例如 IP 地址、城市、国家/地区、登录时间、设备名称。Amazon Cognito 高级安全功能可以分析这些详细信息。

  • 验证一键式链接是否有效。

  • 使用事件 ID、反馈令牌和用户名构建您自己的一键式链接。

注意

要生成一键式链接并在高级安全电子邮件模板中使用 {one-click-link-valid}{one-click-link-invalid} 占位符,您必须已经为用户群体配置了域。

高级安全功能添加了以下占位符,您可以将其插入到消息模板中:

高级安全模板占位符

描述

令牌

IP 地址 {ip-address}
城市 {city}
Country {country}
登录时间 {login-time}
设备名称 {device-name}
一键式链接有效 {one-click-link-valid}
一键式链接无效 {one-click-link-invalid}
事件 ID {event-id}
反馈令牌 {feedback-token}

自定义 SMS 消息

注意

在新的 Amazon Cognito 控制台体验中,您可以自定义短信

您可以在消息收发选项卡中的消息模板标题下自定义用于多重身份验证(MFA)的短信。

重要

您的自定义消息必须包含 {####} 占位符。该占位符会在消息发送之前替换为身份验证代码。

Amazon Cognito 规定短信(包括验证码)的最大长度为 140 个 UTF-8 字符。

自定义 SMS 验证消息

您可以通过编辑是否要自定义您的 SMS 验证消息?标题下的模板来自定义用于电话号码验证的 SMS 消息。

重要

您的自定义消息必须包含 {####} 占位符。该占位符会在消息发送之前替换为验证代码。

消息的最大长度为 140 个 UTF-8 字符,其中包括验证代码。

自定义电子邮件验证消息

要使用 Amazon Cognito 验证用户池中用户的电子邮件地址,您可以向用户发送一封电子邮件,其中包含用户可以点击的链接或可以输入的代码。

要自定义用于电子邮件地址验证消息的电子邮件主题和消息内容,请编辑用户群体的消息收发选项卡中的验证消息模板。当您编辑验证消息模板时,您可以选择验证类型,即代码链接

当您选择代码作为验证类型时,您的自定义消息必须包含 {####} 占位符。发送消息时,验证代码会替换占位符。

当您选择链接作为验证类型时,您的自定义消息必须包含格式为 {##Verify Your Email##} 的占位符。您可以更改占位符之间的文本字符串,例如 {##Click here##}。标题为 Verify Your Email(验证您的电子邮件)的验证链接将替换此占位符。

电子邮件验证消息的链接将您的用户定向到类似于以下示例的 URL。

https://<your user pool domain>/confirmUser/?client_id=abcdefg12345678&user_name=emailtest&confirmation_code=123456

消息的最大长度为 20000 个 UTF-8 字符,其中包括验证代码(如果有)。您可以在此消息中使用 HTML 标签来格式化内容。

自定义用户邀请消息

您可以通过编辑消息收发选项卡中的邀请消息模板,自定义 Amazon Cognito 通过 SMS 或电子邮件发送给新用户的用户邀请消息。

重要

您的自定义消息必须包含 {username}{####} 占位符。当 Amazon Cognito 发送邀请消息时,它会将这些占位符替换为您用户的用户名和密码。

SMS 消息的最大长度为 140 个 UTF-8 字符,其中包括验证代码。电子邮件的最大长度为 20000 个 UTF-8 字符,其中包括验证代码。您可以在电子邮件中使用 HTML 标签来格式化内容。

自定义您的电子邮件地址

默认情况下,Amazon Cognito 通过 no-reply@verificationemail.com 向用户池中的用户发送电子邮件。您可以选择指定自定义 FROM 和 REPLY-TO 电子邮件地址来代替 no-reply@verificationemail.com

自定义 FROM 和 REPLY-TO 电子邮件地址
  1. 导航到 Amazon Cognito 控制台,选择用户池

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

  3. 选择 Messaging(消息收发)选项卡。在 Email(电子邮件)下,选择 Edit(编辑)。

  4. 选择 SES Region(SES 区域)。

  5. 从在您所选 SES Region(SES 区域)中已经过 Amazon SES 验证的电子邮件地址列表中,选择 FROM email address(发件人电子邮件地址)。要使用来自经过验证的域名的电子邮件地址,请在 Amazon Command Line Interface 或 Amazon API 中配置电子邮件设置。有关更多信息,请参阅《Amazon Simple Email Service 开发人员指南》中的在 Amazon SES 中验证电子邮件地址和域

  6. 从您所选 SES Region(SES 区域)中配置集的列表中,选择 Configuration set(配置集)。

  7. 为您的电子邮件消息输入易记且格式为 John Stiles <johnstiles@example.com>FROM sender name(FROM 发件人名称)。

  8. 要自定义 REPLY-TO 电子邮件地址,请在 REPLY-TO email address(REPLY-TO 电子邮件地址)字段中输入有效的电子邮件地址。

授权 Amazon Cognito 代表您发送 Amazon SES 电子邮件(通过自定义 FROM 电子邮件地址)

您可以将 Amazon Cognito 配置为从自定义 FROM 电子邮件地址而不是默认地址发送电子邮件。要使用自定义地址,您必须授予 Amazon Cognito 权限,才能从经过 Amazon SES 验证的身份发送电子邮件。大多数情况下,您可以创建发送授权策略来授予权限。有关更多信息,请参阅《Amazon Simple Email Service 开发人员指南》中的使用 Amazon SES 的发送授权

当您将用户池配置为使用 Amazon SES 处理电子邮件时,Amazon Cognito 会在您的账户中创建 AWSServiceRoleForAmazonCognitoIdpEmailService 角色来授予对 Amazon SES 的访问权限。使用 AWSServiceRoleForAmazonCognitoIdpEmailService 服务相关角色时无需发送授权策略。只需在用户池中使用默认电子邮件功能经过验证的 Amazon SES 身份作为 FROM 地址时,才需要添加发送授权策略。

有关 Amazon Cognito 创建的服务相关角色的更多信息,请参阅对 Amazon Cognito 使用服务相关角色

以下示例发送授权策略授予 Amazon Cognito 使用经 Amazon SES 验证的身份的有限能力。Amazon Cognito 在代表 aws:SourceArn 中的用户池和 aws:SourceAccount 条件中的账户时才能发送电子邮件。有关更多示例,请参阅《Amazon Simple Email Service 开发人员指南》中的 Amazon SES 发送授权策略示例

注意

在此示例中,“Sid”值为唯一标识语句的任意字符串。有关策略语法的更多信息,请参阅《Amazon Simple Email Service 开发人员指南》中的 Amazon SES 发送授权策略

{ "Version": "2012-10-17", "Statement": [ { "Sid": "stmnt1234567891234", "Effect": "Allow", "Principal": { "Service": [ "email.cognito-idp.amazonaws.com" ] }, "Action": [ "SES:SendEmail", "SES:SendRawEmail" ], "Resource": "<your SES identity ARN>", "Condition": { "StringEquals": { "aws:SourceAccount": "<your account number>" }, "ArnLike": { "aws:SourceArn": "<your user pool ARN>" } } } ] }

当您从下拉菜单中选择 Amazon SES 身份时,Amazon Cognito 控制台会为您添加相似策略。如果您使用 CLI 或 API 配置用户池,则必须将与前例结构相同的策略附加到您的 Amazon SES 身份。