图解HTTP--第八章--确认访问用户身份的认证
8.1 何为认证
计算机本身无法判断目前的使用者的身份,为了确认当前者是否真的具有访问系统的权限,就需要核对“登录者本人才知道的信息”、“登录者本人才会有的信息”,核对的信息通常是以下这些:
- 密码:只有本人才会知道的字符串信息;
- 动态令牌:仅限本人持有的设备内显示的一次性密码;
- 数字证书:仅限本人(终端)持有的信息;
- 生物认证:指纹和虹膜等本人的生理信息;
- IC卡等:仅限本人持有的信息;
HTTP使用的认证方式如下:
- BASIC认证(基本认证);
- DIGEST认证(摘要认证);
- SSL客户端认证;
- FormBase认证(基于表单认证);
8.2 BASIC认证
BASIC认证是从HTTP/1.0就定义的认证方式。BASIC认证采用Base64编码方式,但这不是加密处理,不需要任何附加信息即可对其解码。由于明文解码后就是用户信息,在HTTP等非加密通信的线路上进行BASIC认证的过程中,被盗的可能性极高。另外,除此之外想再进行一次BASIC认证时,一般的浏览器无法实现认证注销操作。
8.3 DIGEST认证
为了弥补BASIC认证的弱点,从HTTP/1.1开始就有了DIGEST认证。DIGEST认证同样使用质询/响应的方式,但不会像BASIC认证那样直接发送明文密码。
所谓质询响应方式是指,一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。因为发送给对方的只是响应摘要及由质询码产生的计算结果,所以比起BASIC认证,密码泄漏的可能性就降低了。
8.4 SSL客户端认证
SSL客户端认证借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。
8.5 基于表单认证
基于表单的认证方法并不是在HTTP协议中定义的。客户端会向服务器上的Web应用程序发送登录信息,按登录信息的验证结果认证。