将标头用于身份验证令牌的主要原因是啥?

Posted

技术标签:

【中文标题】将标头用于身份验证令牌的主要原因是啥?【英文标题】:What is the main reason to use headers for authentication tokens?将标头用于身份验证令牌的主要原因是什么? 【发布时间】:2015-12-27 15:02:09 【问题描述】:

刚刚开始使用 angular 中的身份验证。我经常阅读的是使用标头传递令牌,如下所示:$http Auth Headers in AngularJS 我的问题是将令牌传递给后端的每个请求,使用标头的主要原因是什么?这只是为了更清洁的解决方案还是为了性能?

【问题讨论】:

【参考方案1】:

为此使用标头不是 Angular 的事情,许多 API 都使用这些,例如,服务器可以通过仅检查标头而不是请求正文来确定是否应允许客户端快速访问。这样可以更好地分离身份验证和授权功能以及服务器上的负载处理之间的关注点。

上游服务器(其中可能有很多层)可以添加和删除标头,并且通常比在请求正文中更有效地路由和授权您的请求。

标头还将身份验证数据保留在 URL 请求参数之外,这看起来更简洁,但也会阻止身份验证数据出现在浏览器历史记录等中。

一个缺点可能是,如果您通过网络代理发出请求,则代理可能会去除某些标头,尤其是当它们是非标准名称时。

【讨论】:

【参考方案2】:

如果您与服务器的连接是 HTTPS,那么 HTTP 标头也会被加密。查询参数不是。

【讨论】:

以上是关于将标头用于身份验证令牌的主要原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章

基于 Spring Security 令牌的身份验证

存储令牌和身份验证状态的安全方法是啥?

如果用于身份验证的 JWT 令牌保存在 HTTP-Only cookie 中,您如何从 cookie 中读取它以便我可以将其包含在请求标头中?

使用 APIRequestFactory 测试基于令牌的身份验证的正确方法是啥?

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

如何使用身份验证过滤器将标头设置为令牌请求 OAuth?