首页 > 解决方案 > AWS API Gateway 授权方:同时要求 OAuth 令牌和 API 密钥可以获得什么安全性?

问题描述

我正在尝试使用 AWS Cognito 用户池令牌保护 AWS API Gateway。API Gateway 授权设置允许我要求 HTTP 请求同时包含x-api-key标头和authorization标头(包含 JWT 令牌)。我附上了这张照片。

在我看来,需要 API 密钥和 OAuth 令牌是多余的。要求此端点的客户端同时提供这两者可能有什么实际的安全优势?

API Gateway 授权人设置

标签: amazon-web-servicessecurityaws-api-gatewayamazon-cognito

解决方案


Api Key 更多地与使用计划一起使用来控制

  • 给定客户端可以访问哪些阶段。
  • 设置节流限制。例如:每分钟 100 个电话。
  • 设置配额限制。例如:每天 10 万次通话。

Api 密钥实际上不包含任何用户特定的详细信息,它通常是每个应用程序/客户端创建的静态值。

就我个人而言,我什至不认为此 AWS Api Key 等同于老式 Basic Auth 标头,并且根本不用于保护 api。

另一方面,身份验证标头通常是 access_token 和/或 id_token,当特定用户成功通过身份验证服务器授权/身份验证并获得对 API 的访问权限时生成。

从文档:

不要依赖 API 密钥作为对 API 进行身份验证和授权的唯一方法。一方面,如果您在使用计划中有多个 API,则具有该使用计划中一个 API 的有效 API 密钥的用户可以访问该使用计划中的所有 API。相反,请使用 IAM 角色、Lambda 授权方或 Amazon Cognito 用户池。


推荐阅读