本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置验证和邀请消息
借助 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-收件人的电子邮件地址
-
导航到 Amazon Cognito 控制台
,选择用户池。 -
从列表中选择一个现有用户池,或创建一个用户池。
-
选择 Messaging(消息收发)选项卡。在 Email(电子邮件)下,选择 Edit(编辑)。
-
选择 SES 区域。
-
从您所选SES地区的 Amazon SES 验证过的电子邮件地址列表中选择一个FROM电子邮件地址。要使用来自已验证域的电子邮件地址,请在 AWS Command Line Interface 或中配置电子邮件设置 AWS API。有关更多信息,请参阅《亚马逊简单电子邮件服务开发者指南》SES中的在亚马逊中验证电子邮件地址和域名。
-
从所选SES地区的配置集列表中选择一个配置集。
-
按照以下格式输入电子邮件的友好FROM发件人姓名
John Stiles <johnstiles@example.com>
。 -
要自定义 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。