amazon-web-services - AWS API Gateway 授权方:同时要求 OAuth 令牌和 API 密钥可以获得什么安全性?
问题描述
我正在尝试使用 AWS Cognito 用户池令牌保护 AWS API Gateway。API Gateway 授权设置允许我要求 HTTP 请求同时包含x-api-key
标头和authorization
标头(包含 JWT 令牌)。我附上了这张照片。
在我看来,需要 API 密钥和 OAuth 令牌是多余的。要求此端点的客户端同时提供这两者可能有什么实际的安全优势?
解决方案
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 用户池。
推荐阅读
- java - Java - Wait() 没有按顺序工作
- sql - db2 for i:在 in 子句中的 sql 过程中传递包含逗号分隔字符串的 varchar
- node.js - 无法通过 express/heroku 查看 Angular 应用程序?
- java - 使用对象字段值作为参数从 arrayList 中删除对象
- git - Sourcetree 克隆卡住了
- algorithm - 具有固定斜率和约束端点的凸多边形中的最长直线
- webpack - 将外部 js 添加到 Vue CLI 时出现 Mime 类型错误
- symfony - Symfony 表单和不同的验证组
- lua - 受启发的 Lua 程序在计算机和计算器上有所不同
- python - 标准化列以将其表示为散点图中的大小