Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

常见 Amazon Cognito 场景

本主题介绍使用 Amazon Cognito 的六个常见场景。

Amazon Cognito 的两个主要组件是用户池和身份池。用户池是为您的 Web 和移动应用程序用户提供注册和登录选项的用户目录。身份池提供 AWS 凭证以向用户授予对其他 AWS 服务的访问权限。

用户池是 Amazon Cognito 中的用户目录。您的应用程序用户可以通过用户池直接登录,也可以通过第三方身份提供商 (IdP) 联合。用户池管理从通过 Facebook、Google 和 Amazon 进行的社交登录返回的以及从 OpenID Connect (OIDC) 和 SAML IdP 返回的令牌的处理开销。 无论您的用户是直接登录还是通过第三方登录,用户池的所有成员都有一个可通过开发工具包访问的目录配置文件。

借助身份池,您的用户可以获取临时 AWS 凭证来访问 AWS 服务,如 Amazon S3 和 DynamoDB。身份池支持匿名来宾用户以及通过第三方 IdP 的联合身份验证。

使用用户池进行身份验证

您可以允许您的用户使用用户池进行身份验证。您的应用程序用户可以通过用户池直接登录,也可以通过第三方身份提供商 (IdP) 联合。用户池管理从通过 Facebook、Google 和 Amazon 进行的社交登录返回的以及从 OpenID Connect (OIDC) 和 SAML IdP 返回的令牌的处理开销。

成功进行身份验证后,您的 Web 或移动应用程序将收到来自 Amazon Cognito 的用户池令牌。您可以使用这些令牌检索允许您的应用程序访问其他 AWS 服务的 AWS 凭证,也可以选择使用它们来控制对您的服务器端资源或 Amazon API Gateway 的访问。

有关更多信息,请参阅 用户池身份验证流程将令牌与用户池结合使用

 身份验证概述

使用用户池访问您的服务器端资源

成功进行用户池登录后,您的 Web 或移动应用程序将收到来自 Amazon Cognito 的用户池令牌。您可以使用这些令牌控制对您的服务器端资源的访问。您也可以创建用户池组来管理权限以及表示不同类型的用户。有关使用组控制资源访问权限的更多信息,请参阅向用户池添加组

 通过用户池访问您的服务器端资源

在为用户池配置域后,Amazon Cognito 服务会预置一个托管 Web UI,您可使用此 UI 向应用程序添加注册页和登录页。使用此 OAuth 2.0 基础,您可以创建自己的资源服务器,以使您的用户能够访问受保护的资源。有关更多信息,请参阅 为您的用户池定义资源服务器

有关用户池身份验证的更多信息,请参阅用户池身份验证流程将令牌与用户池结合使用

结合使用 API 网关 和 Lambda 与用户池访问资源

您可以允许用户通过 API 网关 访问您的 API。API 网关 会验证来自成功的用户池身份验证的令牌,并使用它们向您的用户授予对资源 (包括 Lambda 函数) 或您自己的 API 的访问权限。

您可以使用用户池中的组控制对 API 网关 的权限,方法是将组成员资格映射到 IAM 角色。用户所属的组包含在您的应用程序用户登录时用户池提供的 ID 令牌中。有关用户池组的更多信息,请参阅向用户池添加组

您可以将您的用户池令牌随请求一起提交到 API 网关,以便 Amazon Cognito 授权方 Lambda 函数进行验证。有关 API 网关 的更多信息,请参阅将 API 网关 与 Amazon Cognito 用户池 结合使用

 通过用户池访问 API 网关

使用用户池和身份池访问 AWS 服务

成功进行用户池身份验证后,您的应用程序将收到来自 Amazon Cognito 的用户池令牌。您可以用它们交换用于使用身份池对其他 AWS 服务的临时访问令牌。有关更多信息,请参阅 在登录后使用身份池访问 AWS 服务Amazon Cognito 身份池入门 (联合身份)

 通过包含身份池的用户池访问 AWS 凭证

借助第三方进行身份验证并使用身份池访问 AWS 服务

您可以允许您的用户通过身份池访问 AWS 服务。身份池需要来自由第三方身份提供商进行身份验证的用户的 IdP 令牌 (如果是匿名来宾,则不需要令牌)。作为交换,身份池将授予可用来访问其他 AWS 服务的临时 AWS 凭证。有关更多信息,请参阅 Amazon Cognito 身份池入门 (联合身份)

 使用身份池通过第三方身份提供商访问 AWS 凭证

使用 Amazon Cognito 访问 AWS AppSync 资源

您可以允许您的用户使用来自成功的 Amazon Cognito 身份验证(来自用户池或身份池)的令牌访问 AWS AppSync 资源。有关更多信息,请参阅使用用户池或联合身份访问 AWS AppSync 和数据源

 通过用户池或身份池访问 AWS AppSync 资源