图解HTTP读书笔记.第八章

第八章

HTTP使用的认证方式

  1. BASIC认证(基本认证)
  2. DIGEST认证(摘要认证)
  3. SSL客户端认证
  4. FormBase认证(基于表单认证)

BASIC认证及其步骤

  1. 当需要BASIC认证时,服务器随着状态码401 Authorization Required,返回带WWW-Authenticate首部字段的响应。该字段内包含认证的方式(BASIC)即Request-URI安全域字符串(realm)
  2. 接收到状态码401的客户端为了通过BASIC认证,需要将用户ID和密码发送。发送的字符串内容由用户的ID和密码构成,两者之间以冒号链接后,再经过Base64编码处理。加入ID密码均为“guest”,经过Base64编码,最后结果则为Z3V1c3Q6Z3V1c3Q=。将这串字符写入首部字段Authorization后,发送请求。(输入密码账号即为此过程)
  3. 如果验证通过,则返回一条包含Requet-URI资源的响应
    Base64不是解密方式,而是编码方式,可以明文解码。

DIGEST认证
DIGEST认证仍然使用质询响应的方式,但不会像BASIC那样直接发送明文密码
使用了质询响应方式(challenge/response)但不会像BSAIC那样发送明文密码
所谓质询响应方式是指,一开始一方会先发送认证请求给另一方,接着使用从另一方接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方法
因为发送给对方的指示响应摘要及由质询码产生的计算结果,密码泄露的可能性就降低了

  1. 请求需要认证的资源时,服务器会随着状态码401 Authorization Required,返回带着WWW-Authenticate首部字段的响应。该字段内包含响应方式认证所需的临时质询码(随机数,nonce)
    首部字段WWW-Authenticate内必须包含realm和nonce这两个字段的信息。客户端就是依靠向服务器回送这两个值进行曲儿
    Nonce是一种每次随401响应生成的任意随机字符串。该字符串通常推荐由Base64编码的十六进制数的组成形式。
  2. 接收到401状态码的客户端,返回的响应中包含DIGEST认证必须的首部字段Authorization信息
    首部字段Authorization内必须包含username,realm,nonce,uri和response的字段信息。其中realm和nonce就是之前从服务器接收到的响应中的字段。
    Username是realm限定范围内可进行认证的用户名,
    Uri即Request-URI的值,但考虑到经过代理转发后的值可能被修改,因此事先会复制一份副本保存在uri中
    response也可以叫做Response-Digest,存放经过MD5运算后的密码字符串,形成响应码。
  3. 接收到包含首部字段Authorization请求的服务器,会确认认证信息的正确性。认证通过后则返回Request-URI资源的响应

SSL客户端认证的认证步骤
需要事先将客户端证书发给客户端,且客户端必须安装证书

  1. 接收到认证资源的请求,服务器会发送certificate request报文,要求客户端提供客户端证书
  2. 用户选择将发送的客户端证书后,客户端会把客户端证书信息以Client Certificate报文方式发送给服务器
  3. 服务器验证客户端证书,验证通过后方可领取证书内客户端的公来密钥,然后开始HTTPS加密通信

SSL客户端认证采用双因素认证
SSL客户端认证不会仅依靠证书完成认证。一般会和机遇表单认证组合形成一种双因素认证来使用。所谓双因素认证指的是,认证过程中不仅需要密码一个因素,还需要申请认证者提供其他持有信息,从而作为另一个因素。
第一个认证因素的SSL客户端证书用来认证客户端计算机,第二个认证因素的密码则用来确定这是用户本人所为。

基于表单的认证
客户端会向服务器上的Web应用程序发送登陆信息,按登陆信息的验证结果认证。
认证多半为基于表单认证

session管理及Cookie应用
基于表单认证的标准规范尚未有定论,一般使用Cookie来管理session(会话)
基于表单认证本身是通过服务器端的web应用,将客户端发送过来的用户ID和密码与之前登陆过的信息做匹配来进行验证
但鉴于HTTP是无状态协议,之前成功登陆的用户组状态无法通过协议层面保存下来,即无法实现状态管理,也无法区分他与其他客户。所以用Cookie来管理session。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值