如何正确地将身份验证令牌放在 GET 请求的标头中

Posted

技术标签:

【中文标题】如何正确地将身份验证令牌放在 GET 请求的标头中【英文标题】:How to properly put the auth token in the header for a GET request 【发布时间】:2021-06-30 09:28:21 【问题描述】:

我正在尝试使用 blockcypher.com 向 api 发出获取请求。在文档中,他们只需使用 ?token= 或者如果它是多个参数 &token= 的一部分,将 api 令牌附加到 URL。出于安全原因,将其放入标头以确保令牌不会在 URL 中发送的正确协议是什么?

我已经尝试过这个公式

var client = _clientFactory.CreateClient(nameof(<Parent Function Name>));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", <API Token Here>);

这不起作用。我的 blockcypher 帐户声称,当我使用上述代码时,没有向我的 API 发送任何请求。

【问题讨论】:

【参考方案1】:

如果您调用的 API 不支持 Authorization 标头,则您无能为力。通过查看 BlockCypher 的文档,他们似乎只支持将令牌作为 URL 参数传递。 Authorization 标头非常标准,所以不支持它很奇怪。

只要您只是进行服务器到服务器的通信(而不是浏览器或移动应用程序),这并没有您想象的那么大的安全风险。当您使用 HTTPS 时,请求 URL 会被加密(请参阅Is an HTTPS query string secure?)。

【讨论】:

以上是关于如何正确地将身份验证令牌放在 GET 请求的标头中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 api 请求标头中插入 api 身份验证所需的 jwt 令牌?

Auth 标头未与 GET 请求一起发送

为啥加特林不将身份验证令牌从 POST 返回正文发布到 GET 标头

如何验证请求标头、JWT 令牌

在 ember-file-upload 的请求标头中添加身份验证令牌

如何在传入的http请求标头中添加授权令牌[关闭]