48.HTTP基本认证与摘要认证

转载请注明原始出处:http://blog.csdn.net/a464057216/article/details/52705855

后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
在这里插入图片描述

基本认证与摘要认证用于在HTTP报文交互中,服务端确认客户端身份。

基本认证

在HTTP 1.0提出,服务器收到客户端请求,返回401 UNAUTHORIZED,同时在HTTP响应头的WWW-Authenticate域说明认证方式及认证域,比如:

这里写图片描述

如果客户端是浏览器,收到401后会弹出对话框要求输入用户名及密码:

这里写图片描述

输入的用户名和密码会按照username:password的格式拼接后用base64编码,填入请求报文头部的Authorization域,如Basic bWFyczpsb28=。如果输入的是错误的用户名和密码,服务器会反复要求输入用户名及密码,直至正确或用户点击取消按钮放弃认证。如果输入的是正确的用户名及密码,浏览器返回认证通过后的页面。
由于base64编码本身是可逆的过程,所以如果有中间人截获报文后,通过重放攻击即可获取正确授权。基本认证这种方式适合于弱认证要求的场景:

这里写图片描述

上面的base64字符串的解密过程如下:

这里写图片描述

摘要认证

在HTTP 1.1提出,服务器收到客户端请求后返回401 UNAUTHORIZED,同时在WWW-Authenticate字段说明认证方式是Digest,其他信息还有realm域信息、nonce随机字符串、opaque透传字段(客户端会原样返回)等:

这里写图片描述

浏览器收到响应后,弹出对话框要求用户输入用户名和密码。与基本认证不同在于,摘要认证不会发送原始密码,注意请求中的response字段,是通过其他字段及密码经过一系列摘要运算(md5)得到的:

这里写图片描述

服务端收到请求后,由于其知道用户的原始密码及其他字段信息,使用同样的算法进行摘要计算后,与response字段比较即可验证用户的合法性。服务器端通过更新每次交互过程中的nonoce字段的值,可以保证一定的安全性。

之所以说是一定的安全性,是因为基本认证和摘要认证都是通过用户名+密码的形式对客户端身份进行认证,认证消息都放在HTTP报文头中。因为HTTP报文本身是不加密的,所以只要中间人能够截获交互过程中的报文头,仍然可以仿冒客户端与服务端进行通信。如果要加密交互过程中的报文交互,要采用HTTPS协议。

如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!

如下几篇文章是我在学习HTTP协议时总结的博文,欢迎参考:

  1. HTTP缓存
  2. HTTP代理与重定向
  3. HTTP、HTTPS基本原理
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值