以管理员身份创建用户账户 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

以管理员身份创建用户账户

用户池不仅仅是客户身份和访问管理(CIAM)用户目录,互联网上的任何人都可以在您的应用程序中注册用户配置文件。您可以禁用自助注册。您可能已经认识您的客户,并且只想接纳那些事先获得授权的客户。您可以使用私有 SAML 2.0 或 OIDC 身份提供者、通过导入用户、通过在注册时筛选用户,或者通过使用管理 API 操作创建用户,您可以在应用程序周围设置手动身份验证护栏。以管理员身份创建用户的工作流程可以通过编程方式进行,即当用户在其他系统中注册后对用户进行预配置,也可以在 Amazon Cognito 控制台中根据具体情况或测试进行配置。

当您以管理员身份创建用户时,Amazon Cognito 会为他们设置临时密码并发送欢迎或邀请消息。他们可以点击邀请消息中的链接进行首次登录、设置密码并确认其账户。以下页面说明了如何创建新用户和配置欢迎消息。有关使用用户池 API 和 Amazon SDK 或 CDK 创建用户的更多信息,请参阅 AdminCreateUser

创建用户池之后,您可以使用Amazon Web Services 管理控制台以及 Amazon Command Line Interface 或 Amazon Cognito API 创建用户。您可以为用户池中的新用户创建配置文件,并通过 SMS 或电子邮件向用户发送带有注册说明的欢迎消息。

以下是管理员如何管理用户池中的用户的一些示例。

  • 在 Amazon Cognito 控制台中或通过 AdminCreateUser API 操作创建新用户配置文件。

  • 将用户名和密码、无密码、通行密钥和自定义身份验证流程提供给您的用户池和应用程序客户端。

  • 设置用户属性值。

  • 创建自定义属性。

  • AdminCreateUser API 请求中设置不可变自定义属性的值。此功能在 Amazon Cognito 控制台中不可用。

  • 指定临时密码,创建没有密码的用户,或者允许 Amazon Cognito 自动生成密码。

  • 创建新用户并自动确认其账户,验证他们的电子邮件地址或验证他们的电话号码。

  • 通过 Amazon Web Services 管理控制台或 Lambda 触发器(如自定义消息自定义短信发件人自定义电子邮件发件人)为新用户指定自定义短信和电子邮件邀请消息。

  • 指定是否通过 SMS、电子邮件或两者发送邀请消息。

  • 通过调用 AdminCreateUser API,并为 RESEND 参数指定 MessageAction,向现有用户重新发送欢迎消息。

  • 创建用户时禁止发送邀请消息。

  • 为新用户账户指定长达 90 天的到期时间限制。

  • 允许用户自行注册或要求只能由管理员添加新用户。

管理员还可以在服务器端应用程序中使用 Amazon 凭证让用户登录。有关更多信息,请参阅API 和 SDK 身份验证的授权模型

用户身份验证流程和创建用户

根据用户池的配置,以管理员身份创建用户的选项会有所不同。身份验证流程或可供用户登录和 MFA 的方法可以更改您创建用户以及向他们发送的消息的方式。以下是用户池中可用的一些身份验证流程。

  • 用户名和密码

  • 通行密钥

  • 使用第三方 IdP 登录

  • 使用电子邮件和短信一次性密码(OTP)的无密码身份验证

  • 使用电子邮件、短信和身份验证器应用程序 OTP 的多重身份验证

  • 使用 Lambda 触发器的自定义身份验证

有关如何配置这些登录因素的更多信息,请参阅使用 Amazon Cognito 用户池进行身份验证

创建无密码用户

如果您为用户池启用了无密码登录,则可以创建无密码用户。要创建无密码用户,必须为可用的无密码登录因素提供属性值。例如,如果您的用户池中提供电子邮件 OTP 无密码登录,则可以创建一个没有密码和电子邮件地址属性的用户。如果新用户只能通过密码执行身份验证流程,例如通行密钥或用户名密码,则必须为每个新用户创建或生成临时密码。

创建新的无密码用户
  • 在 Amazon Cognito 控制台中选择请勿设置密码

  • 忽略 AdminCreateUser API 请求的 TemporaryPassword 参数或将其留空

无密码用户会自动得到确认

通常,当您创建新用户时,他们会获得临时密码并进入 FORCE_CHANGE_PASSWORD 状态。当您创建无密码用户时,他们会立即进入 CONFIRMED 状态。您无法向这些处于 CONFIRMED 状态的用户重新发送确认码。

邀请消息会针对无密码用户发生变化。

默认情况下,Amazon Cognito 会向新用户发送一条邀请消息,显示 Your username is {userName} and your password is {####}.。当您创建无密码用户时,消息会显示为 Your username is {userName}.。自定义您的邀请消息,以反映您是否要为用户设置密码。请在无密码身份验证模型中忽略 {####} 密码变量。

当无密码因素可用时,您无法自动生成密码

如果您已将用户池配置为支持电子邮件或电话 OTP 无密码登录,则无法自动生成密码。对于每位将拥有密码的用户,在创建其配置文件时都必须设置一个临时密码。

无密码用户必须具有所有必需属性的值

在创建密码用户时,只有当用户为用户池中已标记为必填的所有属性都提供值时,您的请求才会成功。这适用于任何必需属性,而不仅仅是发送 OTP 所需的电话号码和电子邮件属性。

创建稍后将提供必需属性值的用户

您可能想在用户池中要求提供属性,但在以管理员身份创建用户之后,在应用程序中的用户交互期间收集这些属性。管理员可以在使用临时密码创建用户时忽略必需属性的值。您不能忽略无密码用户的必需属性值。

缺少必需属性值且使用临时密码的用户在首次登录时会收到 NEW_PASSWORD_REQUIRED 质询。然后,他们可以在 requiredAttributes 参数中为缺少的必需属性提供一个值。只有当所有必需属性都可变时,才能创建带有密码但没有必需属性的用户。只有当必需属性可从用户登录时使用的应用程序客户端写入时,用户才能通过 NEW_PASSWORD_REQUIRED 质询和必需属性值完成登录。

当您为管理员创建的用户设置永久密码时,他们的状态会更改为 CONFIRMED,并且您的用户池在他们首次登录时不会提示他们输入新密码必需属性。

在 Amazon Web Services 管理控制台 中创建新用户

您可以设置用户密码要求、配置发送给用户的邀请和验证消息,以及使用 Amazon Cognito 控制台添加新用户。

设置密码策略并启用自行注册

您可以配置设置来降低密码复杂性,以及用户是否可以在用户池中使用公有 API 进行注册。

配置密码策略
  1. 导航到 Amazon Cognito 控制台,选择用户池

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

  3. 选择身份验证方法菜单并找到密码策略。选择编辑

  4. 选择自定义密码策略模式

  5. 选择密码最小长度。有关密码长度要求的限制,请参阅用户池资源配额

  6. 选择密码复杂性要求。

  7. 选择管理员设置的密码应在多长时间内有效。

  8. 选择保存更改

允许自助注册
  1. 导航到 Amazon Cognito 控制台,选择用户池

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

  3. 选择注册菜单并找到自助注册。选择编辑

  4. 选择是否启用自助注册。自助注册通常用于需要在用户池中注册新用户而不分发客户端密钥或 Amazon Identity and Access Management(IAM)API 凭证的公有应用程序客户端。

    禁用自助注册

    如果您不启用自助注册,则必须通过使用 IAM API 凭证的管理 API 操作或通过联合提供商登录来创建新用户。

  5. 选择保存更改

自定义电子邮件和 SMS 消息

自定义用户消息

当您邀请用户登录、注册用户账户或登录并提示用户进行多重身份验证(MFA)时,您可以自定义 Amazon Cognito 发送给用户的消息。

注意

当您在用户池中创建用户并邀请他们登录时将发送邀请消息。Amazon Cognito 将初始登录信息发送到用户的电子邮件地址或电话号码。

当用户在您的用户池中注册用户账户时将发送验证消息。Amazon Cognito 向用户发送代码。当用户向 Amazon Cognito 提供代码时,他们会验证自己的联系人信息并确认自己的账户以进行登录。验证代码的有效期为 24 小时。

当您在用户池中启用 SMS MFA,并且已配置 SMS MFA 的用户登录并提示输入 MFA 时,将发送 MFA 消息

  1. 导航到 Amazon Cognito 控制台,选择用户池

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

  3. 选择消息模板菜单并选择验证消息邀请消息MFA 消息,然后选择编辑

  4. 自定义所选消息类型的消息。

    注意

    自定义消息时,必须包括消息模板中的所有变量。如果变量(例如,{####})不包括在内,您的用户将没有足够的信息来完成消息操作。

    有关更多信息,请参阅消息模板

    1. 验证消息

      1. 选择用于电子邮件消息的验证类型代码验证将发送用户必须输入的数字代码。链接验证将发送一个链接,用户可以点击该链接以验证其联系人信息。用于链接消息变量中的文本显示为超链接文本。例如,使用变量 {##Click here##} 的消息模板在电子邮件中显示为单击此处

      2. 输入用于电子邮件消息的电子邮件主题

      3. 输入用于电子邮件消息的自定义电子邮件消息模板。您可以使用 HTML 自定义此模板。

      4. 输入用于 SMS 消息的自定义 SMS 消息模板。

      5. 选择保存更改

    2. 邀请消息

      1. 输入用于电子邮件消息的电子邮件主题

      2. 输入用于电子邮件消息的自定义电子邮件消息模板。您可以使用 HTML 自定义此模板。

      3. 输入用于 SMS 消息的自定义 SMS 消息模板。

      4. 选择保存更改

    3. MFA 消息

      1. 输入用于 SMS 消息的自定义 SMS 消息模板。

      2. 选择保存更改

创建用户

创建用户

您可以从 Amazon Cognito 控制台为用户池创建新用户。通常,用户可以在设置密码后登录。要使用电子邮件地址登录,用户必须验证 email 属性。要使用电话号码登录,用户必须验证 phone_number 属性。要以管理员身份确认账户,您还可以使用 Amazon CLI 或 API 或者使用联合身份提供者创建用户配置文件。有关更多信息,请参阅 Amazon Cognito API 参考

  1. 导航到 Amazon Cognito 控制台,选择用户池

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

  3. 选择用户菜单,然后选择创建用户

  4. 检查用户池登录和安全要求以获取有关密码要求、可用的账户恢复方法和用户池的别名属性的指导。

  5. 选择您希望如何发送邀请消息。选择 SMS 消息和/或电子邮件消息。要禁止邀请消息,请选择不要发送邀请

    注意

    在您可以发送邀请消息之前,请在用户池的身份验证方法菜单中使用 Amazon Simple Notification Service 和 Amazon Simple Email Service 配置发件人和 Amazon Web Services 区域。收件人消息和数据费率适用。Amazon SES 单独向您收取电子邮件消息费用,Amazon SNS 单独向您收取 SMS 消息费用。

  6. 选择用于新用户的用户名

  7. 选择您是要为用户创建密码,还是让 Amazon Cognito 生成密码。如果用户池中提供无密码登录,则生成密码的选项不可用。任何临时密码都必须遵守用户池密码策略。

  8. 选择创建

  9. 选择用户菜单,然后选择用户的用户名条目。添加和编辑用户属性组成员资格。查看用户事件历史记录