HTTP 认证:基本认证和摘要认证

平时我们浏览网站时要登录的话需要提供帐号和密码以便验证身份,同理 HTTP 认证也是如此,但客户端需要访问服务器获取私人资源的话,就需要提供信息身份证明给服务器验证,验证通过才返回资源。

HTTP 官方定义了 2 个协议:基本认证(basic authentication)和摘要认证(digest authentication)。

一、基本认证

基本认证是目前最流行的 HTTP 认证协议,于 HTTP/1.0 规范中提出。基本认证过程中,服务器可以拒绝一个事务,质询客户端要求提供用户名和密码,服务器会返回 401 状态码,并用 WWW-Authenticate 响应首部指定要访问的安全域。当浏览器收到质询后会弹出个对话框给用户输入用户名和密码,输入后用 Base-64 编码成字符串用 Authorization 请求首部再次发送到服务器。

你或许已经注意到这种认证存在着安全缺陷,虽然用户名和密码是通过 Base-64 编码后才发送的,看段加密后的字符串得不到太多有用的信息,可是可以通过反向编码的方式进行解码,所以说实质上是在裸奔。为了能更安全地认证,一是通过 SSL 加密通道,二是通过另一种认证:摘要认证。

二、摘要认证

摘要认证的存在试图解决基本认证发送明文密码的缺陷。摘要认证的客户端不会发送完整密码,只是发送密码的摘要来证明客户端是知道密码的,服务器根据这个摘要匹配是否正确便能认证。

图源 《HTTP权威指南》

参考
  • 《HTTP权威指南》
  • 《图解HTTP》
  • wiki
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值