HTTP——认证机制
2019-06-21 本文已影响0人
章鱼要回家
某些web页面只对部分人可见,对其他人不可见,这就涉及到认证机制。服务器需要对访问者的身份进行核对。核对的信息通常有:
- 密码
- 动态令牌:本人持有的设备内显示的一次性密码
- 数字证书:仅限本人(终端)持有的信息
- 生物认证:指纹、虹膜等
- IC卡等:仅限本人持有的信息
HTTP使用的认证方式:
- BASIC认证(基本认证)
- DIGEST认证(摘要认证)
- SSL客户端认证
- FormBase认证(基于表单认证)
BASIC认证
一个从HTTP/1.0就定义的认证方式。
认证步骤:
- 客户端发送请求
- 服务器返回状态码401告知客户端需进行验证
- 用户ID和密码以Base64方式编码后发送
- 认证成功返回code200,反之返回401
Base64编码并不是加密处理,所以这种认证方式极不安全。并且无法实现认证注销操作。基于这两点,BASIC认证并不常用。
DIGEST认证
从HTTP/1.1起,为了弥补BASIC认证存在的弱点,有了DIGEST认证。DIGEST认证听防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。与BASIC认证一样,使用上不便捷,安全等级达不到使用标准。
SSL客户端认证
SSL客户端认证可以防止登录名和密码的盗用。借用HTTPS客户端证书完成。
在多数情况下,SSL客户端认证不会独自完成认证,一般需要和表单认证组合形成一种双因素认证来使用。
基于表单认证
由于便利性及安全性的问题,HTTP协议提供的BASIC及DIGEST认证不常使用。此外,SSL客户端认证虽然具有高度的安全等级,但由于操作复杂和费用的等问题,尚未普及。
由于HTTP本身并未能提供一个满足安全食用级别且合乎标准的认证机制,所以只能由Web应用程序各自实现基于表单的认证方式。
客户端会向服务器上的Web应用程序发送登录信息,按登录信息的验证结果认证。根据不同的应用程序,提供的UI及认证方式也各不相同。
Session管理及Cookie运用
表单认证尚未有标准规范,一般使用Cookie管理Session。
认证步骤:
- 客户端发送登录信息(用户ID、密码)使用HTTPS通信
- 服务器收到请求后给用户发放一个用以区别用户的Session ID,验证登录信息,记录用户的认证状态,并与Session ID绑定后记录在服务器。
- 向客户端返回响应,将Session ID写入首部字段Set-Cookie。
- 客户端接收Cookie即Session ID,将其保存在本地,下次向服务器发送请求时,浏览器会自动发送Cookie。
上述过程只是表单认证的一种应用,由于缺乏规范,还有其他不同方法。此外,服务器如何保存用户提交的密码等登录信息也没有标准化。