《图解HTTP》之确认访问用户身份的认证

1.何为认证

为确认本人是否真的具有访问系统的权限,就需要核对“登录者本人才知道的信息”、“登录者本人才会有的信息”。
核对的信息通常是指以下这些。

  • 密码:只有本人才会知道的字符串信息。
  • 动态令牌:仅限本人持有的设备内显示的一次性密码。
  • 数字证书:仅限本人(终端)持有的信息。
  • 生物认证:指纹和虹膜等本人的生理信息。
  • IC卡等:仅限本人持有的信息。

HTTP/1.1使用的认证方式如下

  • BASIC认证(基本认证)
  • DIGEST认证(摘要认证)
  • SSL客户端认证
  • FormBase认证(基于表单认证)

2.BASIC认证

BASIC认证是从HTTP/1.0就定义的认证方式。即便是现在仍有一部分的网站会使用这种认证方式。是Web服务器与通信客户端之间进行的认证方式。


屏幕快照 2019-01-02 上午10.39.08.png

BASIC认证使用上不够便捷灵活,且达不到多数Web网站期望的安全性级别,因此它并不常用。

3.DIGEST认证

为弥补BASIC认证存在的弱点,从HTTP/1.1起就有了DIGEST认证。DIGEST认证同样使用质询/响应的方式,但不会像BASIC认证那样直接发送明文密码。
所谓质询响应方式是指,一开始一方会先发送认证要求给另一方,直接使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。


屏幕快照 2019-01-02 上午10.57.30.png

DIGEST认证提供了高于BASIC认证的安全等级,但是和HTTPS的客户端认证相比仍旧很弱。DIGEST认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。
DIGEST认证和BASIC认证一样,使用上不那么便捷灵活,且仍达不到
多数Web网站对高度安全等级的追求标准。因此它的适用范围也有所限制。

4.SSL客户端认证

SSL客户端认证是借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。

  • SSL客户端认证的步骤
    为到达SSL客户端认证的目的,需要事先将客户端证书分发给客户端,且客户端必须安装此证书。
    步骤一:接收到需要认证资源的请求,服务器会发送Certificate Request报文,要求客户端提供客户端证书。
    步骤二:用户选择将发送的客户端证书后,客户端会把客户端证书信息以Client Certificate报文方式发送给服务器。
    步骤三:服务器验证客户端证书验证通过后方可领取证书内客户端的公开密钥,然后开始HTTPS加密通信。

多数情况下,SSL客户端认证不会仅依靠证书完成认证,一般会和基于表单认证组合形成一种双因素认证来使用。所谓双因素认证就是指,认证过程中不仅需要密码这一因素,还需要申请认证者提供其他持有信息,从而作为另一因素,与其组合使用的认证方式。

5.基于表单认证

基于表单的认证方法并不是在HTTP协议中定义的。客户端会向服务器上的Web应用程序发送登录信息,按登录信息的验证结果认证。

  • 认证多半为基于表单认证
    不具备共同标准规范的表单认证,在每个Web网站上都会有各不相同的实现方式。如果是全面考虑过安全性能而实现的表单认证,那么就能够具备高度的安全等级。但在表单认证的实现中存在问题的Web网站也屡见不鲜。

  • Session管理及Cookie应用
    基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户ID和密码与之前登录过的信息做匹配来进行认证的。


    屏幕快照 2019-01-02 下午1.32.41.png

通常,一种安全的保存方法是,先利用给密码加盐的方式增加额外信息,再使用散列函数计算出散列值后保存。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前面两篇文章中关于 HTTP 相关知识基本上介绍的差不多了,这篇文章是对 HTTP 协议的补充,主要介绍以下三点内...
    lijiankun24阅读 1,356评论 2 3
  • 确认访问用户身份的认证 常见的认证信息如下: 密码:只有本人才会知道的字符串信息 动态令牌:仅限本人持有的设备显示...
    RobotStar阅读 412评论 0 0
  • 译者序 讲解网络协议的权威书籍《HTTP权威指南》《TCP/IP详解》但是对初学者不是很友好 HTTP本身不复杂,...
    tangyefei阅读 987评论 0 4
  • 某些Web页面只想让特定的人浏览,为达到这个目标,必不可少的就是认证功能。 何为认证 为了弄清究竟是谁在访问服务器...
    杰哥长得帅阅读 3,434评论 0 3
  • Web 页面的实现 Web 基于 HTTP 协议通信 客户端(Client)的 Web 浏览器从 Web 服务器端...
    毛圈阅读 1,175评论 0 2