【图解HTTP】访问用户身份的认证

发布于:2022-12-27 ⋅ 阅读:(195) ⋅ 点赞:(0)

【HTTP使用的认证方式】

BASIC认证(基本认证),DIGEST认证(摘要认证),SSL客户端认证,FormBase认证(基于表单认证)

【BASIC认证】

 (1)当请求的资源需要BASIC认证时,服务器会随状态码401Authorization Required,返回带WWW-Authenticate首部字段的响应。该字段内包含认证的方式(BASIC)及Request-URI安全域字符串

(2)接受到状态码401的客户端为了通过BASIC认证,需要将用户ID及密码发送给服务器。发送的字符串内容是由用户ID和密码构成,两者中间以冒号连接后,再经过Base64编码处理

(3)接受到包含首部字段Authorization请求的服务器,会对认证信息的正确性进行验证。如验证通过,则返回一条包含Request-URI资源的响应。

【缺点】

(1)BASIC认证不进行加密,被盗取的可能性很高

(2)如果想再进行一次BASIC认证,一般的浏览器无法实现认证注销操作。

BASIC不够灵活,且安全性不高,不经常用。

【DIGEST认证】

为弥补BASIC认证存在的弱点,从HTTP/1.1有了DIGEST认证。

DIGEST采用质询响应的方式:

一开始客户端会先发送认证要求给服务器,接着使用客户端使用接受到的质询码(每次生成的任意随机字符串)计算生成响应码。最后将响应码返回给对方进行认证。

因为发送给对方的只是响应摘要及质询码产生的计算结果,所以比起BASIC认证,密码泄漏的可能降低。

 

 DIGEST认证提供了高于BASIC认证的安全等级,但是和HTTPS的客户端认证相比依旧很弱。

DIGEST认证和BAISC认证一样,使用上不灵活,安全性不高,适用范围有限。

【SSL客户端认证】

由HTTPS客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。

【SSL客户端认证的认证步骤】

为达到SSL客户端认证的目的,需要事先将客户端证书发给客户端,且客户端必须安装此证书。

(1)接受到需要认证资源的请求,服务器会发送Certficate Request报文,要求客户端提供客户端证书。

(2)用户选择将发送的客户端证书后,客户端会把客户端证书信息以Client Certficate报文方式发送给服务器

(3)服务器验证客户端证书验证通过后方可领取证书内容客户端的公开秘钥,然后开始HTTPS加密通信。

【SSL客户端认证采用双因素认证】

在多数情况下,SSL客户端不会仅依靠证书完成认证,一般会和基于表单认证组合形成的一种双因素认证来使用。双因素认证是指第一个认证因素的SSL客户端证书用来认证客户端计算机,另一个认证因素的密码则用来确定这是用户本人的行为。

【SSL客户端认证的费用】

使用SSL客户端认证需要用到客户端证书。客户端证书需要支付一定费用才能使用。

【基于表单认证】

多数情况下,输入已实现登录的用户ID和密码等登录信息后,发送给Web应用程序。基于认证结果决定认证是否成功。

【认证多半基于表单认证】

HTTP协议提供的BASIC认证和DIGEST认证由于不方便并且安全性不高,所以不怎么使用。

SSL客户端认证虽然安全等级高,但是因为费用高,尚未普及。

比如SSH和FTP协议,服务器与客户端之间的认证是合乎标准规范的,并且满足了最基本的功能需求上的安全使用级别,因此这些协议的认证可以拿来直接使用。

但是对于Web网站的认证功能,能够满足安全使用级别的标准规范并不存在,所以只好使用由Web应用程序各自实现基于表单的认证方式。