48.HTTP基本认证与摘要认证
来源:互联网 发布:asp源码域名绑定授权 编辑:程序博客网 时间:2024/05/11 21:36
- 基本认证
- 摘要认证
转载请注明原始出处: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基本原理
- 48.HTTP基本认证与摘要认证
- HTTP的基本认证和摘要认证
- HTTP基本认证和摘要认证
- HTTP 基本认证,摘要认证,扩展HTTP认证
- HTTP摘要认证方式分析与验证
- HTTP摘要认证
- HTTP摘要认证
- HTTP 摘要认证
- HTTP摘要认证
- http摘要认证
- HTTP摘要认证
- Rest API: 基本认证和摘要认证
- 基本认证_摘要认证_HTTPS
- android的HTTP摘要认证
- rails http基本认证和摘要认证,给网页添加简单的验证
- http认证与portal认证
- HTTP基本认证
- Http 基本认证模式
- B树、B-树、B+树、B*树
- 安卓开发实战之app之版本更新(DownloadManager和http下载)完整实现
- Thinking in java 学习笔记--chp04
- (Java)LeetCode-49. Group Anagrams
- spi协议及工作原理分析
- 48.HTTP基本认证与摘要认证
- bootloader 解析
- HackRank Stacks: Balanced Brackets;/Leetcode valid-parentheses; 括号匹配
- 洛谷 3141
- 安卓沉浸式状态栏
- Unity-AI(Sprite随机运动)
- 玩转树莓派-Raspberry,无线网配置方法
- C语言交换两个整数的值
- 24k的大学生活