HTTP——认证机制

2019-06-21  本文已影响0人  章鱼要回家

某些web页面只对部分人可见,对其他人不可见,这就涉及到认证机制。服务器需要对访问者的身份进行核对。核对的信息通常有:

HTTP使用的认证方式:

BASIC认证

一个从HTTP/1.0就定义的认证方式。
认证步骤:

  1. 客户端发送请求
  2. 服务器返回状态码401告知客户端需进行验证
  3. 用户ID和密码以Base64方式编码后发送
  4. 认证成功返回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。
认证步骤:

  1. 客户端发送登录信息(用户ID、密码)使用HTTPS通信
  2. 服务器收到请求后给用户发放一个用以区别用户的Session ID,验证登录信息,记录用户的认证状态,并与Session ID绑定后记录在服务器。
  3. 向客户端返回响应,将Session ID写入首部字段Set-Cookie。
  4. 客户端接收Cookie即Session ID,将其保存在本地,下次向服务器发送请求时,浏览器会自动发送Cookie。

上述过程只是表单认证的一种应用,由于缺乏规范,还有其他不同方法。此外,服务器如何保存用户提交的密码等登录信息也没有标准化。

上一篇下一篇

猜你喜欢

热点阅读