这是网络系列的第九篇文章,接下来会有更多精彩内容.敬请期待! 让咱们一块儿乘风破浪!web
哈哈, 很久没和你们一块儿学习了. 春节有没有很嗨皮啊? 反正我是懒着过去的....今天再和你们一块儿进步一点点.算法
网络的资源如此之多, 但有些资源为了安全, 不是全部人均可以看到的. 此时, 服务器须要客户端证实本身 的身份, 该篇一块儿来了解下HTTP的基本认证机制.安全
HTTP提供了一套原生的质询/响应(challenge/response)框架. 其认证模型以下: 服务器
HTTP的质询/响应框架支持两种官方的认证协议: 基本认证和摘要认证(摘要认证会在后续文章中一块儿学习). 两种协议对应的HTTP首部及内容也有所区别.先来看看基本认证协议使用的首部信息.网络
认证步骤 | 首部 | 描述 | 方法/状态 |
---|---|---|---|
请求 | 在不知道须要认证时没有具体首部 | GET | |
质询 | WWW-Authenticate | 服务器返回状态码401,拒绝请求; 要求客户端提供用户名和密码. 服务器可能分为不一样的区域,每一个区域都须要不一样的认证, 这些信息都会在WWW-Authenticate响应头中描述; 该首部也会包含对应的认证算法. |
401 Unauthorized |
受权 | Authorization | 客户端再次发出请求, 附加Authorization首部, 说明用户名和密码已经认证算法. | GET |
成功 | Authentication-Info | 若认证经过, 服务器返回对应资源. 能够在该响应头中返回附件信息. | 200 OK |
参考下面的实例:框架
在上述实例中, 质询的响应包含了WWW-Authenticate: Basic realm="Family"
的信息; 服务器可能会把多个文档划分在不一样的域中, realm是服务器对各个域的标识. 不一样的域可能须要不一样的认证.学习
在上述实例的C请求中, 用户名和密码通过Base-64编码以后经过Authorization首部传到服务器. 这里并非明文传输.更多关于Base-64的说明看这里.固然,这一步的转换并不能保证用户名和密码的安全.编码
代理做为web结构中的实体, 也能够为用户提供认证的功能.示意图以下:3d
web服务器首部 | 代理认证首部 |
---|---|
Unauthorized status code 401 | Unauthorized status code 407 |
WWW-Authenticate | Proxy-Authenticate |
Authorization | Proxy-Authorization |
Authentication-Info | Proxy-Authentication-Info |
在了解了基本认证的过程后, 能够了解到它存在的一些问题:代理
用户名和密码经过网络经Base-64编码后传输, 会致使第三方截获并解码后获取用户的隐私信息.
即便第三方没法直接获取用户名密码, 也能够经过 将截获的数据重放给服务器以获取服务器的访问权限.
用户面对大量的用户名和密码时, 有可能使用相同的密码, 这将带来"撞库"的危险.
总之, 基本认证存在很大的风险.
该篇和你们一块儿了解了HTTP的基本认证框架. 除了基本的认证, HTTP还支持摘要认证, 下篇咱们继续学习.到时候见!