8.1 何为认证
访问一个网站的时候,要查看个人的银行卡等私有信息,不能随便谁都可以看吧,就必须证明你是这个信息的所有人才行.所以需要认证
8.2 BASIC认证
步骤
- 客户端发起请求
- 服务器返回401要求进行BASIC认证
- 客户端把帐号密码通过BASE64编码后发给服务器
- 服务器验证帐号密码成功后,返回相应数据
存在的问题
- BASE64并不是加密,任何人看到后都可以解码,在HTTP上被人截获后密码就丢了
- 一般的浏览器无法实现认证注销操作(不明白是啥意思)
8.3 DIGEST认证
- 客户端发起请求
- 服务器返回401和随机码要求进行验证
- 客户端用随机码把密码加密后,和用户名一起,传给服务器
- 服务器验证帐号密码成功后返回数据
存在的问题
- 虽然解决了BASIC密码可能会被盗的风险
- 但是不防止中途被整体篡改
8.4 SSL客户端认证
8.4.1 SSL客户端的认证步骤
- 服务器收到请求,要求客户端提供证书
- 客户端将证书发送给服务器
- 服务器验证客户端成功后,开始SSL加密通信
8.4.2 SSL客户端认证采用双因素认证
- SSL客户端证书,用来验证客户端计算机
- 帐号密码用来验证用户本人
8.4.3 存在的问题
客户端证书要花钱,看别个的网站还要我花钱买证书,肯定没人愿意干,所以出见了基于表单的认证
8.5 基于表单认证
在实现表单认证的时候,要充分考虑安全性能.估计95%的网站都没有达到这个要求吧....
一般是通过传递SESSIONID给客户端,客户端以后每次都带上SESSIONID表明身份
存在的问题
- 如果SESSIONID被盗了,那别人也能使用你的身份访问网站了