图解HTTP之确认访问用户身份的认证(八)

某些 Web 页面只想让特定的人浏览,或者干脆仅本人可见。为达到这个目标,必不可少的就是认证功能。

计算机本身无法判断坐在显示器前的使用者的身份。进一步说,也无法确认网络的那头究竟有谁。可见,为了弄清究竟是谁在访问服务器,就得让对方的客户端自报家门。

为确认 ueno 本人是否真的具有访问系统的权限,就需要核对“登录者本人才知道的信息”、“登录者本人才会有的信息”。

核对的信息通常是指以下这些。

密码;动态令牌;数字证书;生物认证;IC卡等。

认证

HTTP 使用的认证方式

BASIC认证(基础认证)HTTP/1.0

BASIC认证步骤

步骤一:请求资源,需要BASIC认证,服务器返回401;

步骤二:接收到401之后,客户端将用户ID和密码发送给服务器,Base64处理“用户名ID:密码”

步骤三:服务器端接收到信息后验证,返回响应。200或者401

BASIC不安全,用Base64编码

DIGEST认证(摘要认证)

质询响应:一开始一方会先发送认证要求给另一方,接着用另一方发送的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。

DIGEST认证步骤

步骤一:请求资源,响应401以及相应字段。质询码nonce

步骤二:接收到401后,响应相应数据,由质询码nonce计算

步骤三:验证数据后响应200/401

SSL 客户端认证

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

SSL 客户端认证之前,在客户端必须安装相应证书

步骤一:接受请求,返回Certificate Request报文,需要客户端提供证书

步骤二:用户选择证书以后以Client Certificate报文发给服务器

步骤三:服务器端验证通过后,获取证书内容的公钥,开始HTTPS加密通信

SSL客户端认证证书选择

SSL客户端认证采用双因素认证,即证书认证和表单认证。

基于表单认证

Web页面,输入用户名和密码的登录

一般会使用Cookie来管理Session会话状态。

表单认证步骤

步骤一:输入用户名、密码等以POST方式发送给服务器端

步骤二:服务器端验证通过后,将状态以及生成的SessionID绑定记录后,设置Set-Cookie响应属性,返回响应

步骤三:客户端接收后,将SessionID座位Cookie存入本地,下次请求自动发送该Cookie

为了安全可在Cookie内加入httponly属性

 

猜你喜欢

转载自blog.csdn.net/csdn916865/article/details/85049544