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

来源:互联网 发布:黑莓q10软件 编辑:程序博客网 时间:2024/06/02 01:44

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也会被自动发送

0 0
原创粉丝点击