

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

# 常见 Amazon Cognito 术语和概念
<a name="cognito-terms"></a>

Amazon Cognito 为 Web 和移动应用程序提供凭证。它借鉴*身份和访问管理*中的常见术语并在此基础上构建。有许多关于通用身份和访问管理术语的指南可供参考。部分示例包括：
+ IDPro 知识体系中的[术语](https://bok.idpro.org/article/id/41/)
+ [Amazon 身份服务](https://www.amazonaws.cn/identity/)
+ 来自 NIST CSRC 的[术语表](https://csrc.nist.gov/glossary)

以下列表说明了 Amazon Cognito 独有的术语或在 Amazon Cognito 中具有特定上下文的术语。

**Topics**
+ [常规](#cognito-terms-general)
+ [用户池](#cognito-terms-user-pools)
+ [身份池](#cognito-terms-identity-pools)

## 常规
<a name="cognito-terms-general"></a>

此列表中的术语并非特定于 Amazon Cognito，而是在身份和访问管理从业人员中得到广泛认可的术语。以下并不是术语的详尽列表，而是关于这些术语在本指南中的特定 Amazon Cognito 上下文中的解释。

**访问令牌**  <a name="terms-accesstoken"></a>
JSON Web 令牌（JWT），其中包含有关访问信息系统的实体[授权](#terms-authorization)的信息。

**应用程序**  
通常指的是移动应用程序。在本指南中，*应用*通常是连接到 Amazon Cognito 的 Web 应用程序或移动应用程序的简写。

**基于属性的访问控制 (ABAC)**  <a name="terms-abac"></a>
一种模型，在这种模型中，应用程序根据用户的属性（例如其职位或部门）来确定对资源的访问权限。实施 ABAC 的 Amazon Cognito 工具包括用户池中的 ID 令牌和身份池中的[主体标签](#term-afac)。

**身份验证**  <a name="terms-authentication"></a>
为访问信息系统而建立真实身份的过程。Amazon Cognito 接受来自第三方身份提供者的身份验证证明，同时也是软件应用程序的身份验证提供者。

**授权**  <a name="terms-authorization"></a>
向资源授予权限的过程。用户池[访问令牌](#terms-accesstoken)包含应用程序可用于允许用户和系统访问资源的信息。

**授权服务器**  <a name="term-authzserver"></a>
生成 [JSON Web 令牌](#terms-jwt)的 OAuth 或 OpenID Connect（OIDC）系统。Amazon Cognito 用户池[托管授权服务器](#terms-managedauthorizationserver)是用户池中两种身份验证和授权方法的授权服务器组件。用户池还支持 [SDK 身份验证](#terms-upapi)中的 API 质询-响应流程。

**机密应用程序、服务器端应用程序**  
用户远程连接的应用程序，其代码位于应用程序服务器上，并且可以访问密钥。这通常是 Web 应用程序。

**身份提供者（IdP）**  <a name="terms-idp"></a>
一个存储和验证用户身份的服务。Amazon Cognito 可以向[外部提供者](#terms-externalprovider)请求身份验证，并可以成为应用程序的 IdP。

**JSON Web 令牌（JWT）**  <a name="terms-jwt"></a>
一个 JSON 格式的文档，其中包含有关经过身份验证的用户的声明。ID 令牌对用户进行身份验证，访问令牌授权用户，刷新令牌更新凭证。Amazon Cognito 从[外部提供者](#terms-externalprovider)那里接收令牌，并向应用程序或 Amazon STS 发放令牌。

**机器对机器（M2M）授权**  <a name="terms-m2m"></a>
授权向非用户交互式计算机实体（比如 Web 服务器应用程序层）的 API 端点发出请求的过程。用户池通过[访问令牌](#terms-accesstoken)中的 OAuth 2.0 范围，在客户端凭证授予中提供 M2M 授权。

**多重身份验证（MFA)**  <a name="terms-mfa"></a>
要求用户在提供用户名和密码后提供额外的身份验证。Amazon Cognito 用户池具有[本地用户](#terms-localuser)的 MFA 特征。

**OAuth 2.0（社交）提供者**  <a name="terms-oauth"></a>
用户池或身份池的 IdP，用于提供 [JWT](#terms-jwt) 访问令牌和刷新令牌。在用户进行身份验证后，Amazon Cognito 用户池自动与社交提供者进行交互。

**OpenID Connect（OIDC）提供者**  
用户池或身份池的 IdP，用于扩展 [OAuth](#terms-oauth) 规格以提供 ID 令牌。在用户进行身份验证后，Amazon Cognito 用户池自动与 OIDC 提供者进行交互。

**通行密钥、WebAuthn**  
一种身份验证形式，采用该形式时，用户设备上的加密密钥或通行密钥提供其身份验证证明。用户使用硬件或软件身份验证器中的生物识别或 PIN 码机制验证他们是否存在。通行密钥可以抵御网络钓鱼，并绑定到特定网站/应用程序，从而提供安全的无密码体验。Amazon Cognito 用户池支持使用通行密钥进行登录。

**无密码**  
一种用户无需输入密码的身份验证形式。无密码登录方法包括发送到电子邮件地址和电话号码的一次性密码（OTP）以及通行密钥。Amazon Cognito 用户池支持使用 OTP 和通行密钥进行登录。

**公共应用程序**  
设备上的一个独立应用程序，其代码存储在本地，并且无法访问密钥。这通常是移动应用程序。

**资源服务器**  
具有访问控制的 API。Amazon Cognito 用户池还使用*资源服务器*来描述组件，该组件定义了用于与 API 进行交互的配置。

**基于角色的访问控制 (RBAC)**  
一个根据用户的职能名称授予访问权限的模型。Amazon Cognito 身份池通过区分 IAM 角色来实施 RBAC。

**服务提供者（SP）、依赖方（RP）**  <a name="terms-relyingparty"></a>
依赖 IdP 来断言用户值得信赖的应用程序。Amazon Cognito 充当外部 IdP 的 SP，充当基于应用程序的 SP 的 IdP。

**SAML 提供商**  
用户池或身份池的 IdP，用于生成经过数字签名的断言文档，您的用户会将该文档传递给 Amazon Cognito。

**通用唯一标识符（UUID）**  <a name="terms-uuid"></a>
应用于对象的 128 位标签。Amazon Cognito UUID 在每个用户池或身份池中都是唯一的，但不遵循特定的 UUID 格式。

**用户目录**  <a name="terms-userdirectory"></a>
一组用户及其属性，可以向其他系统提供该信息。Amazon Cognito 用户池是用户目录，也是用于整合外部用户目录中用户的工具。

## 用户池
<a name="cognito-terms-user-pools"></a>

当您在本指南中看到以下列表中的术语时，它们指的是用户池的特定特征或配置。

**自适应身份验证**  <a name="terms-adaptiveauthentication"></a>
一项[高级安全](#term-advancedsecurity)特征，用于检测潜在的恶意活动并为[用户配置文件](#terms-userprofile)增加额外的安全保护。

**应用程序客户端**  <a name="term-appclient"></a>
一个组件，用于将用户池的设置定义为一个应用程序的 IdP。

**回调 URL、重定向 URI、返回 URL**  <a name="term-callbackurl"></a>
[应用程序客户端](#term-appclient)中的一种设置，以及向用户池的[授权服务器](#terms-managedauthorizationserver)所发出请求中的一个参数。回调 URL 是您的[应用程序](#term-app)中经过身份验证的用户的初始目的地。

**基于选择的身份验证**  <a name="terms-choicebasedauthentication"></a>
一种使用用户池的 API 身份验证形式，采用该形式时，每个用户都有一组可供他们选择的登录选项。他们的选择可能包括带或不带 MFA 的用户名和密码、通行密钥登录，或者使用电子邮件或短信一次性密码进行无密码登录。您的应用程序可以通过请求身份验证选项列表或声明首选项来决定用户的选择流程。  
请与[基于客户端的身份验证](#terms-declarativeauthentication)进行比较。

**基于客户端的身份验证**  <a name="terms-declarativeauthentication"></a>
一种使用用户池 API 和通过 Amazon SDK 构建的应用程序后端进行身份验证的形式。在声明式身份验证中，您的应用程序独立确定用户应执行的登录类型，并预先请求该类型。  
请与[基于选择的身份验证](#terms-choicebasedauthentication)进行比较。

**已泄露的凭证**  
一项[高级安全](#term-advancedsecurity)特征，用于检测攻击者可能知道的用户密码，并为[用户配置文件](#terms-userprofile)增加额外的安全保护。

**确认**  <a name="terms-confirmation"></a>
一个过程，用于确定已满足先决条件，可允许新用户登录。通常通过电子邮件地址或电话号码[验证](#terms-verification)来完成确认。

**自定义身份验证**  
使用 [Lambda 触发器](#terms-triggers)的身份验证过程的一个扩展，定义了额外的用户质询和响应。

**设备身份验证**  
一个身份验证过程，将 [MFA](#terms-mfa) 替换为使用可信设备 ID 的登录。

**域、用户池域**  <a name="terms-domain"></a>
在 Amazon 中托管您的[托管登录页面](#terms-managedlogin)的 Web 域。您可以在自己拥有的域中设置 DNS，也可以在 Amazon 拥有的域中使用标识性子域前缀。

**基础版计划**  <a name="terms-essentialsplan"></a>
包含用户池中最新开发功能的[功能计划](#terms-featureplan)。基础版计划不包括[增值版计划](#terms-plusplan)中的自动学习安全功能。

**外部提供者、第三方提供者**  <a name="terms-externalprovider"></a>
与用户池存在信任关系的 IdP。用户池充当外部提供商和您的应用程序之间的中间实体，以便使用 SAML 2.0、OIDC 和社交提供商来管理身份验证流程。用户池将外部提供商的身份验证结果整合到单个 IdP 中，以便您的应用程序可以使用单个 OIDC 依赖方库处理多个用户。

**功能计划**  <a name="terms-featureplan"></a>
您可以为用户池选择的一组功能。功能计划的 Amazon 账单费用各不相同。新用户池的默认功能计划为[基础版计划](#terms-essentialsplan)。  

**当前计划**
+ [精简版计划](#terms-liteplan)
+ [基础版计划](#terms-essentialsplan)
+ [增值版计划](#terms-plusplan)

**联合用户、外部用户**  <a name="terms-federateduser"></a>
用户池中由[外部提供者](#terms-externalprovider)进行身份验证的用户。

**托管 UI（经典）、托管 UI 页面**  <a name="terms-hostedui"></a>
您的用户池域上早期版本的身份验证前端、依赖方和身份提供者服务。托管 UI 具有一组基本功能和简化的外观。您可以通过上传徽标图像文件和带有预先确定的 CSS 样式集的文件来应用托管 UI 品牌。请与[托管登录](#terms-managedlogin)进行比较。

**Lambda 触发器**  <a name="terms-triggers"></a>
Amazon Lambda 中的一个函数，用户池可以在用户身份验证过程的关键点自动调用该函数。您可以使用 Lambda 触发器自定义身份验证结果。

**本地用户**  <a name="terms-localuser"></a>
用户池[用户目录](#terms-userdirectory)中的[用户配置文件](#terms-userprofile)，它不是通过[外部提供者](#terms-externalprovider)进行身份验证而创建。

**关联用户**  <a name="terms-linkeduser"></a>
来自[外部提供者](#terms-externalprovider)的用户，其身份与[本地用户](#terms-localuser)合并。

**精简版计划**  <a name="terms-liteplan"></a>
包含最初向用户池推出的功能的[功能计划](#terms-featureplan)。精简版计划不包括[基础版计划](#terms-essentialsplan)中的新功能或[增值版计划](#terms-plusplan)中的自动学习安全功能。

**托管授权服务器、托管 UI 授权服务器、授权服务器**  <a name="terms-managedauthorizationserver"></a>
[托管登录](#terms-managedlogin)的一个组件，可托管用于与您的[用户池域](#terms-domain)上的 IdP 和应用程序进行交互的服务。[托管 UI](#terms-hostedui) 与托管登录的不同之处在于它提供的用户交互功能，但具有相同的授权服务器功能。

**托管登录、托管登录页面**  <a name="terms-managedlogin"></a>
您的[用户池域](#terms-domain)中的一组网页，用于托管进行用户身份验证的服务。这些服务包括作为 [IdP](#terms-idp)、第三方 IdP 的[依赖方](#terms-relyingparty)以及用户交互式身份验证 UI 服务器运行的功能。在为用户池设置域时，Amazon Cognito 会将所有托管登录页面联机。  
您的应用程序导入 OIDC 库，这些库调用用户的浏览器，并将他们引导至托管登录 UI 以进行注册、登录、密码管理以及执行其他身份验证操作。身份验证后，OIDC 库可以处理身份验证请求的结果。

**托管登录身份验证**  <a name="terms-managedloginauthentication"></a>
使用[用户池域](#terms-domain)上的服务登录，通过用户交互式浏览器页面或 HTTPS API 请求完成。应用程序使用 OpenID Connect（OIDC）库处理托管登录身份验证。此过程包括使用[外部提供商](#terms-externalprovider)进行登录、使用交互式托管登录页面进行本地用户登录以及 [M2M 授权](#terms-m2m)。使用经典[托管 UI](#terms-hostedui) 进行身份验证也属于该术语范畴。  
请与 [Amazon SDK 身份验证](#terms-upapi)进行比较。

**增值版计划**  <a name="terms-plusplan"></a>
包含用户池中最新开发功能和高级安全功能的[功能计划](#terms-featureplan)。

**SDK 身份验证、Amazon SDK 身份验证**  
一组身份验证和授权 API 操作，您可以使用 Amazon SDK 将其添加到您的应用程序后端。此身份验证模型需要您自己的自定义构建登录机制。该 API 可以登录[本地用户](#terms-localuser)和[关联用户](#terms-linkeduser)。  
请与[托管登录身份验证](#terms-managedloginauthentication)进行比较。

**威胁防护、高级安全功能**  <a name="term-advancedsecurity"></a>
在用户池中，威胁防护是指旨在缓解对您的身份验证和授权机制造成威胁的技术。自适应身份验证、凭证泄露检测和 IP 地址阻止列表均属于威胁防护类别。

**令牌自定义**  
令牌生成前 [Lambda 触发器](#terms-triggers)的结果，该触发器在运行时修改用户的 ID 令牌或访问令牌。

**用户池、Amazon Cognito 身份提供者、`cognito-idp`、Amazon Cognito 用户池**  
一项 Amazon 资源，为与 OIDC IdP 配合使用的应用程序提供身份验证和授权服务。

**验证**  <a name="terms-verification"></a>
确认用户拥有电子邮件地址或电话号码的过程。用户池向输入新电子邮件地址或电话号码的用户发送代码。当他们向 Amazon Cognito 提交代码时，他们会验证自己对消息目的地的所有权，并且可以从用户池中接收其他消息。另请参阅[确认](#terms-confirmation)。

**用户配置文件、用户账户**  <a name="terms-userprofile"></a>
[用户目录](#terms-userdirectory)中的用户条目。所有用户（包括来自第三方 IdP 的用户）在其用户池中都有配置文件。

## 身份池
<a name="cognito-terms-identity-pools"></a>

当您在本指南中看到以下列表中的术语时，它们指的是身份池的特定特征或配置。

**访问控制属性**  <a name="term-afac"></a>
身份池中[基于属性的访问控制](#terms-abac)的一种实施。身份池将用户属性作为标签应用于用户凭证。

**基本（经典）身份验证**  
一个身份验证过程，您可以在这个过程中自定义对[用户凭证](#terms-usercredentials)的请求。

**已经过开发人员验证的身份**  
一个身份验证过程，在这个过程中使用[开发人员凭证](#terms-developercredentials)授权身份池[用户凭证](#terms-usercredentials)。

**开发人员凭证**  <a name="terms-developercredentials"></a>
身份池管理员的 IAM API 密钥。

**增强型身份验证**  
一个身份验证流程，根据您在身份池中定义的逻辑选择 IAM 角色并应用主体标签。

**身份**  
一个 [UUID](#terms-uuid)，用于将应用程序用户及其[用户凭证](#terms-usercredentials)链接到与身份池存在信任关系的外部[用户目录](#terms-userdirectory)中的配置文件。

**身份池、Amazon Cognito 联合身份、Amazon Cognito 身份、`cognito-identity`**  
一项 Amazon 资源，为使用[临时 Amazon 凭证](#terms-usercredentials)的应用程序提供身份验证和授权服务。

**未经验证的 身份**  
尚未使用身份池 IdP 登录的用户。您可以允许用户在进行身份验证之前为单个 IAM 角色生成有限的用户凭证。

**用户凭证**  <a name="terms-usercredentials"></a>
用户在身份池身份验证后收到的临时 Amazon API 密钥。