目录
一、BASIC认证(基本认证)
二、DIGEST认证(摘要认证)
三、SSL客户端认证
四、FormBase认证(基于表单认证)
认证用户身份时,核对的信息通常是指以下这些:
- 密码:只有本人才会知道的字符串信息。
- 动态令牌︰仅限本人持有的设备内显示的一次性密码。
- 数字证书:仅限本人(终端)持有的信息。
- 生物认证:指纹和虹膜等本人的生理信息。
- IC 卡等:仅限本人持有的信息。
HTTP使用的认证方式有一下几种:BASIC认证(基本认证)、DIGEST认证(摘要认证)、SSL客户端认证、FormBase认证(基于表单认证)。
一、BASIC认证(基本认证)
BASIC认证 ( 基本认证 ) 是从 HTTP /1.0就定义的认证方式。即便是现在,仍有一部分的网站会使用这种认证方式。是 Web 服务器与通信客户端之间进行的认证方式。
Base64 编码方式不是加密处理。不需要任何附加信息即可对其解码。换言之,由于明文解码后就是用户 ID 和密码,在 HTTP 等非加密通信的线路上进行 BASIC认证的过程中,如果被人窃听,被盗的可能性极高。另外,除此之外想再进行一次 BASIC 认证时, 一般的浏览器却无法实现认证注销操作,这也是问题之一。BASIC认证使用上不够便捷灵活, 且达不到多数Web网站期望的安全性等级,因此它并不常用。
二、DIGEST认证(摘要认证)
为弥补 BASIC 认证存在的弱点,从 HTTP /1.1起就有了 DIGEST 认证。DIGEST 认证使用质询 / 响应的方式 ( challenge / response ),所谓质询响应方式是指:一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码,最后将响应码返回给对方进行认证的方式。
因为发送给对方的只是响应摘要及由质询码产生的计算结果,所以比起 BASIC 认证,密码泄露的可能性就降低了。
DIGEST认证提供了高于 BASIC 认证的安全等级,但是和 HTTPS 的客户端认证相比仍旧很弱。 DIGEST 认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。
DIGEST认证和 BASIC 认证一样,使用上不那么便捷灵活,且仍达不到多数Web网站对高度安全等级的追求标准。因此它的适用范围也有所受限。
三、SSL客户端认证
利用 SSL 客户端认证可以避免用户 ID 和密码被盗时被第三者冒充情况的发生。
SSL客户端认证是借由 HTTPS 的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。
SSL 客户端认证的认证步骤
为达到 SSL 客户端认证的目的,需要事先将客户端证书分发给客户端,且客户端必须安装此证书。
步骤 1 : 接收到需要认证资源的请求,服务器会发送 Certifncate Request 报文 , 要求客户端提供客户端证书。
步骤 2 : 用户选择将发送的客户端证书后,客户端会把客户端证书信息以 ClientCertificate报文方式发送给服务器。
步骤 3 : 服务器验证客户端证书验证通过后方可领取证书内客户端的公开密钥,然后开始 HTTPS 加密通信。
四、FormBase认证(基于表单认证)
由于使用上的便利性及安全性问题, HTTP 协议标准提供的 BASIC 认证和 DIGEST 认证几乎不怎么使用。另外, SSL 客户端认证虽然具有高度的安全等级,但因为导入及维持费用等问题,还尚未普及。
基于表单的认证方法并不是在 HTTP 协议中定义的。基于表单认证是通过服务器端的 Web 应用,将客户端发送过来的用户 ID 和密码与之前登录过的信息做匹配来进行认证的。因为 HTTP 是无状态协议,之前已认证成功的用户状态无法通过协议层面保存下来。即,无法实现状态管理,因此即使当该用户下一次继续访问,也无法区分他与其他的用户。于是我们会使用 Cookie 来管理 Session ,以弥补 HTTP 协议中不存在的状态管理功能。
在多数情况下, SSL 客户端认证不会仅依靠证书完成认证,一般会和基于表单认证组合形成一种双因素认证( Two–factor authentication ) 来使用。所谓双因素认证就是指,认证过程中不仅需要密码这一个因素,还需要申请认证者提供其他持有信息,从而作为另一个因素,与其组合使用的认证方式。
换言之,第一个认证因素的 SSL 客户端证书用来认证客户端计算机,另一个认证因素的密码则用来确定这是用户本人的行为。通过双因素认证后,就可以确认是用户本人正在使用匹配正确的计算机访问服务器。
——《图解HTTP》笔记
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)