在登录后使用 API Gateway 访问资源 - Amazon Cognito

在登录后使用 API Gateway 访问资源

Amazon Cognito 用户池令牌的常见用途是授权向 API Gateway REST API 发出的请求。访问令牌中的 OAuth 2.0 范围可以对方法和路径(例如 /app_assetsHTTP GET)进行授权。ID 令牌可以用作 API 的通用身份验证,也可以将用户属性传递给后端服务。API Gateway 还有其他自定义授权选项,例如 HTTP API 的 JWT 授权方和可以应用更精细逻辑的 Lambda 授权方

下图展示了一个应用程序如何通过访问令牌中的 OAuth 2.0 范围来获得对 REST API 的访问权限。

一个应用程序的流程图,该应用程序使用 Amazon Cognito 用户池进行身份验证,并使用 Amazon API Gateway 授权访问 API 资源。

您的应用程序必须从经过身份验证的会话中收集令牌,并将其作为持有者令牌添加到请求中的 Authorization 标头。配置您为用于评估令牌内容的 API、路径和方法配置的授权方。仅当请求符合您为授权方设置的条件时,API Gateway 才会返回数据。

API Gateway API 可以通过以下一些方法来批准来自应用程序的访问:

  • 访问令牌有效、未过期且包含正确的 OAuth 2.0 范围。适用于 REST API 的 Amazon Cognito 用户池授权方是一种常见的实现,进入门槛很低。您还可以评估向此类授权方发出的请求的正文、查询字符串和标头。

  • ID 令牌有效且未过期。当您将 ID 令牌传递给 Amazon Cognito 授权方时,您可以在应用程序服务器上对 ID 令牌内容进行额外验证。

  • 访问令牌或 ID 令牌中的组、声明、属性或角色符合您在 Lambda 函数中定义的要求。Lambda 授权方解析请求标头中的令牌,并对其进行评估以作出授权决策。您可以在函数中构造自定义逻辑,也可以向 Amazon Verified Permissions 发出 API 请求。

您还可以使用来自用户池的令牌来授权向 AWS AppSync GraphQL API 发出的请求。