我应该对 API 密钥使用 Authorization 标头吗

Posted

技术标签:

【中文标题】我应该对 API 密钥使用 Authorization 标头吗【英文标题】:Should I use the Authorization header for API keys 【发布时间】:2021-10-24 07:31:36 【问题描述】:

我们将通过 Azure API 管理公开自定义构建的 API (.NET)。我们希望尽可能符合众所周知的标准,因此我们不会让 API 消费者感到惊讶。 API 通过用户从 APIM 的开发者门户生成的 API 密钥进行保护。

我的理解是 Authorization 标头应该用于身份验证和授权目的。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization

但奇怪的是,API-Key 并未包含在身份验证方案中。

https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml#authschemes

API 使用者是否应该使用授权标头进行身份验证?

例如Authorization: API-Key xxx-xxx

或自定义标题。

例如my-key:xxx-xxx

【问题讨论】:

【参考方案1】:

从技术上讲,如果您在授权标头中有令牌,则不需要任何 API 密钥。我假设 API 密钥/客户端和密钥已用于生成令牌。当客户端通过授权标头发送令牌时,API 所有者会验证您的令牌并返回响应。

【讨论】:

以上是关于我应该对 API 密钥使用 Authorization 标头吗的主要内容,如果未能解决你的问题,请参考以下文章

获取适用于 Android 的 Google Places API 密钥

我应该将使用 Elastic Beanstalk 部署的 NodeJS 应用程序的 API 密钥存储在哪里?

将我的 Google Geocoding API 密钥与 Python 地理编码器一起使用

Google Maps Android API v2 授权失败

当我尝试按地址获取 gps 坐标时,我应该在哪里添加 Google API 密钥?

我应该采取哪些措施来保护我的Google Maps API密钥?