配置验证和邀请消息 - Amazon Cognito

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

配置验证和邀请消息

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

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

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

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

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

  • 您的用户邀请消息

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

注意

只有当您在 “SMS验证” 选项卡中选择要求进行电话号码和电子邮件验证时,才会显示和电子邮件验证消息模板。同样,仅当设置为必填项或可选MFA设置时,才会显示SMSMFA消息模板。

消息模板

您可以使用消息模板在消息中插入占位符。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 控制台体验中,你可以自定义消息 SMS

您可以在 “SMS消息模板” 标题下的 “消息” 选项卡中自定义多因素身份验证消息 (MFA)。

重要

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

Amazon Cognito 规定包括身份验证码在内的SMS消息的最大长度为 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

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

自定义用户邀请消息

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

重要

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

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

自定义您的电子邮件地址

默认情况下,Amazon Cognito 通过 no-reply@verificationemail.com 向用户池中的用户发送电子邮件。你可以选择指定自定义FROM和收件人的电子邮件地址REPLY,而不是 no-reply@verificationemail.com

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

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

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

  4. 选择 SES 区域

  5. 从您已在所选SES地区的 Amazon SES 验证过的电子邮件地址列表中选择一个FROM电子邮件地址。要使用来自已验证域的电子邮件地址,请在 AWS Command Line Interface 或中配置电子邮件设置 AWS API。有关更多信息,请参阅《亚马逊简单电子邮件服务开发者指南》SES中的在亚马逊中验证电子邮件地址和域名

  6. 从所选SES地区的配置集列表中选择一个配置集。

  7. 按照以下格式输入电子邮件的友好FROM发件人姓名John Stiles <johnstiles@example.com>

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

授权 Amazon Cognito 代表您发送SES亚马逊电子邮件(使用FROM自定义电子邮件地址)

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

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

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

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

注意

在此示例中,“Sid”值为唯一标识语句的任意字符串。有关策略语法的更多信息,请参阅《亚马逊简单电子邮件服务开发者指南》中的亚马逊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>" } } } ] }

当您从下拉菜单中选择亚马逊SES身份时,Amazon Cognito 控制台会为您添加类似的策略。如果您使用CLI或API来配置用户池,则必须将与上一个示例类似的策略附加到您的 Amazon Ident SES ity 中。