本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置用户创建策略
您的用户池可以允许用户注册,您也可以以管理员身份创建用户。您还可以控制注册后的验证和确认过程由用户掌控的程度。例如,您可能需要审查注册并根据外部验证流程接受注册。此配置,或管理员创建用户策略,还可设置用户无法再确认其用户账户之前的时间长度。
作为软件的客户身份和访问管理 (CIAM) 平台,Amazon Cognito 可以满足公众客户的需求。接受注册并拥有应用程序客户端的用户池,无论有没有托管 UI,都可以为互联网上知道您的可公开发现的应用程序客户端 ID 并请求注册的任何人创建用户配置文件。注册的用户配置文件可接收访问和身份令牌,还可以访问您为应用程序授权的资源。在用户池中激活注册之前,请查看您的选项并确保配置符合您的安全标准。请按照以下步骤所述,谨慎设置启用自行注册和 AllowAdminCreateUserOnly
。
- AWS Management Console
-
用户池的注册体验选项卡和创建用户池向导的配置注册体验步骤包含在用户池中注册和以管理员身份创建用户的一些设置。
配置注册体验
-
在 Cognito 辅助验证和确认中,选择是否允许 Cognito 自动发送消息以进行验证和确认。启用此设置后,Amazon Cognito 会向新用户发送电子邮件或SMS消息,其中包含他们必须向您的用户池出示的代码。这将确认他们对电子邮件地址或电话号码的所有权,将等效属性设置为已验证,并确认用于登录的用户账户。您选择的要验证的属性将决定验证消息的传送方式和目的地。
-
在创建用户时,验证属性更改并不重要,但与属性验证有关。可以允许已更改但尚未验证其登录属性的用户继续使用其新属性值或原始属性值登录。有关更多信息,请参阅 当用户更改其电子邮件或电话号码时应进行验证。
-
必填属性显示用户注册或您创建用户之前必须为其提供值的属性。只能在创建用户池向导中设置必填属性。
-
自定义属性对用户创建和注册过程很重要,因为只有在首次创建用户时才能为不可变的自定义属性设置值。有关自定义属性的更多信息,请参阅自定义属性。
-
如果您希望用户能够使用未经身份验证的用户生成新帐户,请在 “自助注册” 中选择 “启用自助注册”。 SignUp
API如果您禁用自助注册,则只能在 Amazon Cognito 控制台中或AdminCreateUserAPI通过请求以管理员身份创建新用户。在自助注册处于非活动状态的用户池中,SignUpAPI请求会返回,NotAuthorizedException
并且托管用户界面不显示注册链接。
对于您计划以管理员身份创建用户的用户池,可以在管理员设置的临时密码到期时间下的登录体验选项卡中配置临时密码的有效期。
以管理员身份创建用户的另一个重要元素是邀请消息。创建新用户时,Amazon Cognito 会给他们发送一条包含您的应用程序链接的消息,以便他们可以首次登录。可以在消息模板下的消息收发选项卡中自定义这个消息模板。
您可以使用客户端密钥配置机密应用程序客户端(通常是 Web 应用程序),以防止在没有应用程序客户端密钥的情况下注册。作为安全最佳实践,请勿在公共应用程序客户端(通常是移动应用程序)中分发应用程序客户端密钥。您可以在 Amazon Cognito 控制台的应用程序集成选项卡中使用客户端密钥创建应用程序客户端。
- Amazon Cognito user pools API
-
您可以通过编程方式在CreateUserPool或UpdateUserPoolAPI请求中设置用于在用户池中创建用户的参数。
该AdminCreateUserConfig元素为用户池的以下属性设置值。
以下示例在添加到完整的API请求正文中时,设置的用户池中自助服务注册处于非活动状态,并有一封基本的邀请电子邮件。
"AdminCreateUserConfig": {
"AllowAdminCreateUserOnly": true,
"InviteMessageTemplate": {
"EmailMessage": "Your username is {username} and temporary password is {####}.",
"EmailSubject": "Welcome to ExampleApp",
"SMSMessage": "Your username is {username} and temporary password is {####}."
}
}
CreateUserPool或UpdateUserPoolAPI请求的以下附加参数控制新用户的创建。
- AutoVerifiedAttributes
-
注册新用户时要自动向其发送消息的属性、电子邮件地址或电话号码。
- 策略
-
用户池密码策略。
- 架构
-
用户池自定义属性。它们对用户的创建和注册过程很重要,因为只有在首次创建用户时才能为不可变的自定义属性设置值。
此参数还将为您的用户池设置必填属性。以下文本插入到完整API请求正文的Schema
元素中时,根据需要设置email
属性。
{
"Name": "email",
"Required": true
}