

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

# 基础版计划的功能
<a name="feature-plans-features-essentials"></a>

基础版功能计划包含 Amazon Cognito 用户池大多数先进且最新的功能。当您从精简版计划切换到基础版计划时，将获得托管登录页面的新功能、通过电子邮件一次性密码进行多重身份验证的功能、强化的密码策略，以及自定义访问令牌。要继续 up-to-date使用新的用户池功能，请为您的用户池选择 Essentials 套餐。

以下各节简要概述了您可以通过基础版计划向应用程序添加的功能。有关详细信息，请参阅以下页面。

**其他资源**
+ 访问令牌自定义：[令牌生成前 Lambda 触发器](user-pool-lambda-pre-token-generation.md)
+ 电子邮件 MFA：[短信和电子邮件消息 MFA](user-pool-settings-mfa-sms-email-message.md)
+ 密码历史记录：[密码、账户恢复和密码策略](managing-users-passwords.md)
+ 增强型 UI：[将品牌应用于托管登录页面](managed-login-branding.md)

**Topics**
+ [访问令牌自定义](#features-access-token-customization)
+ [电子邮件 MFA](#features-email-mfa)
+ [防止密码重用](#features-password-reuse)
+ [托管登录提供的托管式登录与授权服务器](#features-enhanced-ui)
+ [基于选择的身份验证](#features-user-auth)

## 访问令牌自定义
<a name="features-access-token-customization"></a>

用户池[访问令牌](https://datatracker.ietf.org/doc/html/rfc6749#section-1.4)向应用程序授予以下权限：[访问 API](cognito-user-pools-define-resource-servers.md)、从 [userInfo 端点](userinfo-endpoint.md)检索用户属性或为外部系统建立[组成员关系](cognito-user-pools-user-groups.md)。在高级场景中，您可能需要将应用程序在运行时确定的其他临时参数添加到用户池目录中的默认访问令牌数据中。例如，您可能需要使用 [Amazon Verified Permissions](amazon-cognito-authorization-with-avp.md) 验证用户的 API 权限，并相应地调整访问令牌中的范围。

基础版计划在[令牌生成前触发器](user-pool-lambda-pre-token-generation.md)的现有功能基础上进一步增强。在较低层级的计划中，您可以使用额外的声明、角色和组成员资格来自定义 ID 令牌。基础版添加了触发器输入事件的新版本，能够自定义访问令牌声明、角色、组成员资格和作用域。在事件版本三中， machine-to-machine（M2M）[客户端凭证授予](federation-endpoints-oauth-grants.md)可自定义访问令牌。

**自定义访问令牌**

1. 选择基础版或增值版功能计划。

1. 为触发器创建 Lambda 函数。要使用我们的示例函数，[请为其配置 Node.js](https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html)。

1. 使用我们的[示例代码](user-pool-lambda-pre-token-generation.md#aws-lambda-triggers-pre-token-generation-example-version-2-overview)填充您的 Lambda 函数，或者自己编写函数。您的函数必须处理来自 Amazon Cognito 的请求对象，并返回您想要包括的更改。

1. 将您的新函数作为[版本 2 或 3](user-pool-lambda-pre-token-generation.md#user-pool-lambda-pre-token-generation-event-versions) 令牌生成前触发器来分配。版本 2 事件用于自定义用户身份的访问令牌。版本 3 用于自定义用户和机器身份的访问令牌。

**了解详情**
+ [自定义访问令牌](user-pool-lambda-pre-token-generation.md#user-pool-lambda-pre-token-generation-accesstoken)
+ [如何在 Amazon Cognito 用户池中自定义访问令牌](https://aws.amazon.com/blogs/security/how-to-customize-access-tokens-in-amazon-cognito-user-pools/)

## 电子邮件 MFA
<a name="features-email-mfa"></a>

可以将 Amazon Cognito 用户池配置为使用电子邮件作为多重身份验证（MFA）的第二个因素。通过电子邮件 MFA，Amazon Cognito 可以向用户发送一封包含验证码的电子邮件，用户必须输入该验证码才能完成身份验证过程。这样就为用户登录流程额外增加了一层重要的安全保护。要启用基于电子邮件的 MFA，必须将用户池配置为使用 [Amazon SES 电子邮件发送配置](user-pool-email.md#user-pool-email-developer)，而不是默认的电子邮件配置。

当您的用户选择通过电子邮件进行 MFA 时，每当用户尝试登录时，Amazon Cognito 都会向其注册的电子邮件地址发送一次性验证码。然后，用户必须将此验证码提供给用户池，这样才能完成身份验证流程并获得访问权限。这样可以确保即使用户的用户名和密码遭到泄露，他们还必须提供额外的因素（通过电子邮件发送的验证码），然后才能访问您的应用程序资源。

有关更多信息，请参阅 [短信和电子邮件消息 MFA](user-pool-settings-mfa-sms-email-message.md)。下面概述了如何设置用户池和用户以使用电子邮件 MFA。

**在 Amazon Cognito 控制台中设置电子邮件 MFA**

1. 选择基础版或增值版功能计划。

1. 在用户池的**登录**菜单中，编辑**多重身份验证**。

1. 选择要设置的 **MFA 强制执行**级别。使用**需要 MFA** 选项时，API 中的用户会自动收到质询，要求他们使用 MFA 进行设置、确认和登录。在需要 MFA 的用户池中，托管登录会提示用户选择和设置 MFA 因素。使用**可选 MFA** 选项时，您的应用程序必须为用户提供选项来设置 MFA 和设置用户电子邮件 MFA 首选项。

1. 在 **MFA 方法**下，选择**电子邮件消息**作为其中一个选项。

**了解详情**
+ [短信和电子邮件消息 MFA](user-pool-settings-mfa-sms-email-message.md)

## 防止密码重用
<a name="features-password-reuse"></a>

默认情况下，Amazon Cognito 用户池密码策略会设置密码长度和字符类型要求以及临时密码到期时间。基础版计划增加了强制执行密码历史记录的功能。当用户尝试重置其密码时，您的用户池会阻止用户将其设置为以前的密码。有关配置密码策略的更多信息，请参阅[添加用户池密码要求](managing-users-passwords.md#user-pool-settings-policies)。下面概述了如何使用密码历史记录策略来设置用户池。

**在 Amazon Cognito 控制台中设置密码历史记录**

1. 选择基础版或增值版功能计划。

1. 在用户池的**身份验证方法**菜单中，找到**密码策略**，然后选择**编辑**。

1. 配置其他可用选项，并为**防止使用之前的密码**设置一个值。

**了解详情**
+ [密码、账户恢复和密码策略](managing-users-passwords.md)

## 托管登录提供的托管式登录与授权服务器
<a name="features-enhanced-ui"></a>

Amazon Cognito 用户池具有支持以下功能的可选网页：OpenID Connect (OIDC) IdP、 IdPs第三方的服务提供商或依赖方，以及用于注册和登录的公共用户交互页面。这些页面统称为*托管登录*。当您为用户池选择域时，Amazon Cognito 会自动激活这些页面。精简版计划提供托管 UI，而基础版计划则支持这一高级版本的注册和登录页面。

托管登录页面具有简洁的 up-to-date界面，具有更多用于自定义品牌和样式的功能和选项。基础版计划是可启用托管登录的最低计划级别。

**在 Amazon Cognito 控制台中设置托管登录**

1. 从**设置**菜单中，选择基础版或增值版功能计划。

1. 在**域**菜单中，[将域分配给](cognito-user-pools-assign-domain.md)您的用户池，然后选择**托管登录**的**品牌版本**。

1. 在**托管登录**菜单的**样式**选项卡下，选择**创建样式**并将样式分配给应用程序客户端，或者新建一个应用程序客户端。

**了解详情**
+ [用户池托管登录](cognito-user-pools-managed-login.md)

## 基于选择的身份验证
<a name="features-user-auth"></a>

基础版层级引入了一种新的*身份验证流程*，用于增强型 UI 和基于 SDK 的 API 操作中的身份验证操作。该流程称为*基于选择的身份验证*。基于选择的身份验证是一种方法，在这种方法中，用户的身份验证流程并非始于应用程序端声明的登录方式，而是先查询可用的登录方式，再由用户从中进行选择。您可以将用户池配置为支持基于选择的身份验证，并启用用户名密码、无密码和通行密钥身份验证。在 API 中，这就是 `USER_AUTH` 流程。

**在 Amazon Cognito 控制台中设置基于选择的身份验证**

1. 选择基础版或增值版功能计划。

1. 在用户池的**登录**菜单中，编辑**基于选择的登录选项**。选择并配置要在基于选择的身份验证中启用的身份验证方法。

1. 在用户池的**身份验证方法**菜单中，编辑登录操作的配置。

**了解详情**
+ [使用 Amazon Cognito 用户池进行身份验证](authentication.md)