使用 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/SDK 或 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。