使用 Amazon Cognito 用户池作为授权方控制对 REST API 的访问 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon Cognito 用户池作为授权方控制对 REST API 的访问

作为使用 IAM 角色和策略Lambda 授权方(以前称为自定义授权方)的替代方案,您可以使用 Amazon Cognito 用户池来控制谁可以在 Amazon API Gateway 中访问您的 API。

要将 Amazon Cognito 用户池与您的 API 一起使用,您必须先创建 COGNITO_USER_POOLS 类型的授权方,然后配置 API 方法以使用该授权方。部署 API 之后,客户端必须先将用户注册到用户池,获取用户的身份令牌或访问令牌,然后使用令牌之一调用 API 方法,这通常设置为请求的 Authorization 标头。只有提供了所需的令牌并且提供的令牌有效时,API 调用才会成功,否则,客户端未获得授权来执行调用,因为客户端没有可用于授权的凭证。

使用身份令牌,基于已登录用户的身份声明来授权 API 调用。使用访问令牌,基于指定访问受保护资源的自定义范围授权 API 调用。有关更多信息,请参阅将令牌与用户池结合使用资源服务器和自定义范围

要为 API 创建和配置 Amazon Cognito 用户池,请执行以下任务:

  • 使用 Amazon Cognito 控制台、CLI/开发工具包或 API 创建用户池,或者使用由其他 Amazon 账户拥有的用户池。

  • 使用 API Gateway 控制台、CLI/开发工具包或 API 创建具有选定用户池的 API Gateway Authorizer。

  • 使用 API Gateway 控制台、CLI/开发工具包或 API,在所选 API 方法上启用授权方。

要在启用了用户池时调用任意 API 方法,您的客户端执行以下任务:

  • 使用 Amazon Cognito CLI/开发工具包或 API 将用户注册到所选用户池,获取身份令牌或访问令牌。要了解有关使用 SDK 的更多信息,请参阅使用 SDK 的 Amazon Cognito 代码示例

  • 使用客户端特定的框架调用已部署的 API Gateway API 并在 Authorization 标头中提供合适的令牌。

作为 API 开发人员,您必须向客户端开发人员提供用户池 ID、客户端 ID,并可能需要提供作为用户池的一部分定义的关联客户端密钥。

注意

要允许用户使用 Amazon Cognito 凭证登录,同时还获取用于 IAM 角色权限的临时凭证,请使用 Amazon Cognito 联合身份。对于每个 API 资源终端节点 HTTP 方法,将授权类型、类别 Method Execution 设置为 AWS_IAM

在此部分中,我们介绍如何创建用户池、如何将 API Gateway API 与用户池集成,以及如何调用与用户池集成的 API。