在 Web 安全的世界里,HTTP Authorization 头算得上是守卫大门的“门卫”——客户端要访问受保护的资源,就得先亮出身份凭证。这个头部是 HTTP 协议里的标准字段,值通常是一串凭证信息,可能是最传统的用户名加密码,也可能是现代应用里常见的令牌,比如 OAuth 或 JWT。简单说,服务器通过它来确认请求者是否有权干某件事。

无论你是在浏览普通网页、调用 API 接口,还是跑一个复杂的 Web 应用,避免未授权访问都是安全的基础。如果 Authorization 头里的凭证被泄露或者处理不当,身份盗用、数据泄漏这些麻烦事就可能找上门来。所以,选对认证机制、确保头部安全传输,是防御中间人攻击、重放攻击等威胁的关键一环。
HTTP Authorization 头详解
Authorization 头的定义和作用
客户端向服务端传递用户认证凭据时,用的就是这个请求头。格式很简单:
Authorization:
其中 是认证方案,比如 Basic、Bearer; 是具体的凭据。当服务器想确认你有没有权限访问某个资源时,通常会先返回一个 401 状态码,并在响应头里带上 WWW-Authenticate 提示客户端该用哪种认证方式。这时候客户端就得乖乖地在后续请求里塞进 Authorization 头。
如何使用 Authorization 头进行用户认证
操作起来其实不复杂。客户端先通过 401 响应里的 WWW-Authenticate 拿到服务器要求的认证类型,然后构造对应的凭据。举个例子:如果是基本认证(Basic Authentication),就把用户名和密码用冒号拼接,再经过 Base64 编码,塞进头部发回去。服务器收到后解码比对,通过就放行。
不同认证机制简介
基本认证(Basic Authentication)
这是最简单的方案,只靠 Base64 编码的 用户名:密码 字符串来验证身份。好处是实现成本低,坏处是 Base64 编码弱得像纸糊的——任何懂点技术的人都能一秒解码。所以基本认证基本只能搭配 HTTPS 用,否则等于把密码写在明信片上寄出去。
摘要认证(Digest Authentication)
比基本认证多了一层保护,用 MD5 散列函数对密码做哈希后再传输。虽然看上去安全了一些,但 MD5 本身已经被证明不够可靠,而且摘要认证在现代 Web 应用里已经不太流行了——大家更喜欢用前者。
Token 认证,如 Bearer 令牌(Token Authentication)
Token 认证是目前 RESTful API 里最主流的做法。客户端拿一个令牌(比如 JWT),放在 Authorization 头里,服务器验证令牌的有效性。Bearer 令牌是其中最常见的类型,意思是“持有此令牌者即可通行”。这种机制天然支持无状态、跨域,而且可以通过设置过期时间、刷新令牌等手段增强安全性。
OAuth
OAuth 是一个开放授权标准,注意它更强调“授权”而非“认证”。它允许用户让第三方应用访问自己存储在另一服务上的数据,而无需把用户名密码直接交给第三方。比如你用微信登录某个网站,背后的流程就是 OAuth 在起作用。OAuth 2.0 是目前的主流版本,既能做授权也能结合 OpenID Connect 做认证。
API 密钥(API Keys)
API 密钥是一串预先生成的字符,客户端每次请求时带上它。可以放在 URL、请求头或请求体里。它用起来简单,但安全性比较有限——密钥一旦泄露,任何人都能冒充。所以通常只用于对安全要求不高的场景,或者跟 IP 白名单、速率限制等措施搭配使用。
总结
HTTP Authorization 头是 Web 认证流程里的核心部件,它让客户端能把凭据(密码、令牌、签名等)安全地传给服务器,从而确认请求的合法性。从普通网页到 API 接口,再到复杂的微服务架构,这个头部都在默默守护着受保护资源。选对认证类型、用好 HTTPS、注意凭证存储,是每个开发者绕不开的功课。
常见问题解答(FAQ)
HTTP Authorization 头支持哪些认证方案?
常见的有基础认证(Basic)、摘要认证(Digest)、令牌认证(Token,比如 Bearer tokens、OAuth2)、Hawk 认证,以及一些自定义方案。具体要看服务端支持哪些。
使用 HTTP Authorization 头时,如何保护用户的密码?
密码绝不能在传输和存储过程中以明文形式出现。传输时必须用 HTTPS 加密,存储时要使用强哈希函数(如 SHA-256)加盐(Salt)处理。记住:Base64 不是加密,HTTPS 才是真正的防线。
如果 HTTP Authorization 头被截获,会有什么后果?
如果传输没有加密,攻击者拿到凭证后就能直接冒充你访问受保护资源,数据泄露、账号被盗接踵而至。这就是为什么 HTTPS 是硬性要求。此外,一些认证方案(比如短生命周期的令牌、绑定 IP 或会话的令牌)能在一定程度上降低凭证泄漏带来的风险。
参考资料
- RFC 7235 (Hypertext Transfer Protocol (HTTP/1.1): Authentication)
- MDN Web Docs - HTTP authentication
- OAuth 2.0 Authorization Framework
- Let's Encrypt
知识扩展:
- 什么是 API 管理?为什么管理 API 很重要?
- 什么是零信任(Zero Trust)?怎么实施步骤?
