HTTP协议之身份认证

HTTP协议之身份认证


需要弄清到底是谁在访问服务器,确认是否有访问的权限

身份认证信息
密码
动态令牌(仅限本人持有的设备内显示的一次性密码)
数字证书
生物认证(指纹,虹膜)
IC卡等

常见认证方式
◆BASIC认证(基本认证)
◆DIGEST 认证(摘要认证)
◆SSL 客户端认证
◆FormBase 认证(基于表单认证)

◆BASIC认证(基本认证)在这里插入图片描述在这里插入图片描述
这不是加密处理,不需要任何附加信息就可以对BASIC进行解码,明文解码之后就是用户名和密码,在http等非加密的通信上,如果被窃听就会被盗,所以他不大常用。

◆DIGEST 认证(摘要认证)
◆什么是DIGEST认证?
为弥补BASIC认证存在的弱点,从HTTP/1.1起就有了DIGEST认证。
DIGEST认证同样使用质询/响应的方式,但不会像BASIC认证那样直接发送明文密码。

一方先发认证要求给另一方,接着使用从另一方面收到的质询码生成响应码
在这里插入图片描述

DIGEST认证提供高于BASIC认证的安全等级,但是和https客户端相比还是很弱,DIGEST提供了密码被窃听的保护机制,但是不能防止用户伪装,密码被盗就会不安全,所以适用范围也有限。

◆SSL 客户端认证

◆ 从使用用户ID和密码的认证方式来讲,只要二者的内容正确即可认证是本人的行为。但是如果用户ID和密码被盗,就很有可能被第三者冒充。利用SSL客户端认证则可以避免该情况的发生。
SSL 客户端认证是借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证, 服务器可确认访问是否来自已登录的客户端。(类似于银行网银,要求先输入用户名密码,成功还要下载证书,下载每次登录会把证书 通过http报文的方式发给服务器开始通信。)
具体步骤如下:
步骤1:接收到需要认证资源的请求,服务器会发送Certificate Request报文,要求客户端提供客户端证书。
步骤2:用户选择将发送的客户端证书后,客户端会把客户端证书信息以Client Certificate报文方式发送给服务器
步骤3:服务器验证客户端证书,验证通过后方可领取证书内客户端公开秘钥,然后开始HTTPS加密通信。
由于使用上的便利性及安全问题,HTTP协议标准提供的BASIC认证和DIGEST认证几乎都不怎么使用。另外SSL客户端认证虽然具有高度的安全等级,但因为导入及维持费用等问题。还未普及。比如SSH和FTP协议,服务器与客户端之间的认证是合乎标准规范的,并且满足了最基本的功能需求上的安全使用级别,因此这些协议的认证可以拿来直接使用。但是对于Web网站的认证功能,能给满足其安全使用级别的标准规范并不存在,所以只好使用由Web应用程序各自实现基于表单的认证方式。

◆FormBase 认证(基于表单认证)
◆使用最多的验证
◆使用由Web应用程序各自实现基于表单的认证方式。
◆通过Cookie和Session的方式来保持用户的状态。
基于表单的认证方法并不是在HTTP协议中定义的。客**户端会向服务器上的Web应用程序发送登陆信息(Credential ),按登陆信息的验证结果认证。**根据Web应用程序的实际安装,提供的用户界面及认证方式也各不相同。多数情况下,输入事先已登录的用户ID和密码登陆信息后,发送给Web应用程序.基于认证结果来决定认证是否成功。

基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户ID和密码与之前登陆过的信息做匹配来进行认证的。但鉴于HTTP是无状态协议,之前已认证成功的用户状态无法通过协议层面保存下来。即,无法实现状态管理,因此即使当该用户下一次继续访问,也无法区分他与其他的用户。于是我们会使用Cookie来管理Session,以弥补HTTP协议中不存在的状态管理功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章