您的位置:首页 > 其它

第8章 确认访问用户身份的验证

2017-04-17 15:43 323 查看
HTTP使用的认证方式

-
BASIC
认证(基本认证)

-
DIGEST
认证 (摘要认证)

-
SSL
客户端认证

-
FormBase
认证 (基于表单认证)

BASIC
认证

基本认证是从
HTTP/1.0
就存在的认证方式

1、当请求的资源需要进行
BASIC
认证时,服务端会随401状态码返回带
WWW-Authenticate
头部字段的报文。该头部字段内含认证方式(
BASIC
)和Request-uri安全域字符串(
realm


2、客户端为了通过
BASIC
认证需要将用户账号密码发送到服务器。以 (账号:密码)的形式经过BASE6编码写入
Authorization
字段发送请求。

3、服务端验证通过则返回200状态码及请求的资源,若失败则继续返回401。

BASIC
认证虽然将账号密码经过
BASE64
编码但是没有任何加密,一旦被窃听风险极高。

一般浏览器无法执行注销操作。

DIGEST
认证

1、客户端请求。

2、服务端返回401状态码、
WWW-Authenticate
字段中包含realm(认证方式),nonce(随机数)。

3、客户端根据质询码计算出响应码(response)。客户端发出的信息如下:

realm:服务端传回的质询码中的。

nonce:服务端传回的质询码中的。

username: realm限定范围内可进行认证的用户编号。ID

uri:访问的资源。

response:由质询码计算出的用于登陆的响应。

4、服务端认证通过返回客户端请求的资源,若失败则返回401。

SSL
认证

1、SSL认证过程。



客户端发送请求。

服务端将公钥发送给客户端

客户端验证证书,符合要求则将自己的公钥发送给服务端

服务端验证证书,若符合要求则开始HTTP加密通信。

2、SSL客户端采用双因素认证

双因素不仅需要账号密码,还需要申请认证者其他认证信息。

证书

表单

3、SSL客户端证书需要一定费用

FormBase
认证(表单认证 )

Session
管理及
Cookie
应用

客户端把用户名密码等登陆信息发送至服务器。

服务端会发放用以识别用户信息的
Session ID
。通过验证从客户端发来的登陆信息进行用户验证,将
Session ID
在服务端与用户认证状态一起保存起来。因此
Session ID
会是认证凭证,如果
Session ID
被盗走,那么就可以伪装成你的身份。

Session ID应用难以揣测的字符串,服务端也应该将
Session ID
设置安全期限

为了减少跨站脚本攻击(
xss
)带来的危害,应在
Cookie
字段内加入
httponly
属性。

客户端接收到服务端返回的
Session ID
之后将之缓存在本地,下次请求时浏览器会自动发送
Cookie
,因此
Session ID
也会被自动发送
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息