4月阅读周·HTTP权威指南:基本认证机制之认证篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议[插图])是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
基本认证机制
有数百万的人在用Web进行私人事务处理,访问私有的数据。通过Web可以很方便地访问这些信息,但仅仅是方便访问还是不够的。我们要保证只有特定的人能看到我们的敏感信息并且能够执行我们的特权事务。并不是所有的信息都能够公开发布的。未授权用户无法查看我们的在线旅游档案,也不能在未经许可的情况下向Web站点发布文档,这会让我们感觉舒服一些。
服务器需要通过某种方式来了解用户身份。一旦服务器知道了用户身份,就可以判定用户可以访问的事务和资源了。认证就意味着要证明你是谁。通常是通过提供用户名和密码来进行认证的。HTTP为认证提供了一种原生工具。尽管我们可以在HTTP的认证形式和cookie基础之上“运行自己的”认证工具,但在很多情况下,HTTP的原生认证功能就可以很好地满足要求。
认证
当出示像护照或驾照那样有照片的身份证件时,就给出了一些证据,说明你就是你所声称的那个人。在自动取款机上输入PIN码,或在计算机系统的对话框中输入了密码时,也是在证明你就是你所声称的那个人。
现在,这些策略都不是绝对有效的。密码可以被猜出来或被人偶然听到,身份证件可能被偷去或被伪造,但每种证据都有助于构建合理的信任,说明你就是你所声称的那个人。
HTTP的质询/响应认证框架
Web应用程序收到一条HTTP请求报文时,服务器没有按照请求执行动作,而是以一个“认证质询”进行响应,要求用户提供一些保密信息来说明他是谁,从而对其进行质询。
用户再次发起请求时,要附上保密证书(用户名和密码)。如果证书不匹配,服务器可以再次质询客户端,或产生一条错误信息。如果证书匹配,就可以正常完成请求了。
认证协议与首部
HTTP通过一组可定制的控制首部,为不同的认证协议提供了一个可扩展框架。首部格式和内容会随认证协议的不同而发生变化。认证协议也是在HTTP认证首部中指定的。
HTTP定义了两个官方的认证协议:基本认证和摘要认证。今后人们可以随意设计一些使用HTTP质询/响应框架的新协议。
服务器对用户进行质询时,会返回一条401 Unauthorized响应,并在WWW-Authenticate首部说明如何以及在哪里进行认证。
当客户端授权服务器继续处理时,会重新发送请求,但会在Authorization首部附上加密的密码和其他一些认证参数。
授权请求成功完成时,服务器会返回一个正常的状态码(比如,200 OK);对高级认证算法来说,可能还会在Authentication-Info首部附加一些额外的信息。
安全域
需要解释一下HTTP是怎样允许服务器为不同的资源使用不同的访问权限的。你可能已经注意到了,WWW-Authenticate质询中包含了一个realm指令。Web服务器会将受保护的文档组织成一个安全域(security realm)。每个安全域都可以有不同的授权用户集。
比如,假设Web服务器建立了两个安全域:一个用于公司的财务信息,另一个用于个人家庭文档。不同的用户对各个安全域的访问权限是不同的。公司的CEO应该能够访问销售额预测资料,但不应该允许他访问员工和其家人度假的照片!
下面是一个假想的基本认证质询,它指定了一个域:
HTTP/1.0401 Unauthorized
WWW-Authenticate: Basic realm="Corporate Financials"
域应该有一个描述性的字符名,比如Corporate Financials(公司财务资料),以帮助用户了解应该使用哪个用户名和密码。在安全域的名称中列出服务器主机名也是很有帮助的——比如,executive-committee@bigcompany.com。
总结
认证就是要给出一些身份证明。HTTP提供了一个原生的质询/响应(challenge/response)框架,简化了对用户的认证过程。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)