

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

# 在登录后使用 API Gateway 访问资源
<a name="user-pool-accessing-resources-api-gateway-and-lambda"></a>

Amazon Cognito 用户池令牌的常见用途是授权向 [API Gateway REST API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) 发出的请求。访问令牌中的 OAuth 2.0 作用域可以对方法和路径进行授权，比`HTTP GET`如`/app_assets`。ID 令牌可以用作 API 的通用身份验证，也可以将用户属性传递给后端服务。API Gateway 还有其他自定义授权选项，例如[适用于 HTTP 的 JWT 授权](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html)方和 APIs Lambda [授权者，它们可以应用更精细](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html)的逻辑。

下图说明了访问令牌中具有 OAuth 2.0 范围的 REST API 的应用程序。

![\[一个应用程序的流程图，该应用程序使用 Amazon Cognito 用户池进行身份验证，并使用 Amazon API Gateway 授权访问 API 资源。\]](http://docs.aws.amazon.com/zh_cn/cognito/latest/developerguide/images/access-services-api-gateway.png)


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

API Gateway API 可以通过以下一些方法来批准来自应用程序的访问：
+ 访问令牌有效，未过期，并且包含正确的 OAuth 2.0 范围。[适用于 REST API 的 Amazon Cognito 用户池授权方](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html)是一种常见的实现，进入门槛很低。您还可以评估向此类授权方发出的请求的正文、查询字符串和标头。
+ ID 令牌有效且未过期。当您将 ID 令牌传递给 Amazon Cognito 授权方时，您可以在应用程序服务器上对 ID 令牌内容进行额外验证。
+ 访问令牌或 ID 令牌中的组、声明、属性或角色符合您在 Lambda 函数中定义的要求。[Lambda 授权方](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html)解析请求标头中的令牌，并对其进行评估以作出授权决策。您可以在函数中构造自定义逻辑，也可以向 [Amazon Verified Permissions](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/what-is-avp.html) 发出 API 请求。

您还可以使用来自用户池的令牌来授权向 [AWS AppSync GraphQL API](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html#amazon-cognito-user-pools-authorization) 发出的请求。