基本认证机制

认证

HTTP的质询/响应认证框架
Web应用程序收到一个HTTP请求报文时,服务器没有按照请求执行动作,而是以一个”认证质询”进行
响应,要求用户提供一些保密信息来说明他是谁,从而对其进行质询。用户再次发送请求时,要附上
保密证书(用户名和密码)。如果证书不匹配,服务器可以再次质询客户端,或产生一条错误信息。
如果证书匹配,就可以完成正常请求了。
认证协议与首部
HTTP通过一组可定制的控制首部,为不同的认证协议提供了一个可扩展框架,首部格式和内容会随
认证协议的不同而发生变化。认证协议也是在HTTP认证首部中指定的。HTTP定义了两个官方的认证
协议:基本认证和摘要认证。
认证的4个步骤:
首部        描述        方法状态

  • 请求 第一条请求没有认证信息
  • 质询 WWW-Authenticate 服务器用401状态拒绝请求,说明需要用户提供用户名和密码,服务器
    可能分为不同的区域,每个区域都有自己的密码,所以服务器会在WWW-Authenticate首部对保护区域
    进行描述,同样,认证算法也是在WWW-Authenticate首部中指定的。
  • 授权 Authorization 客户端重新发出请求,但这一次会附加一个Authorization首部,用来
    说明认证算法,用户名,密码。
  • 成功 Authentication-Info 如果授权证书是正确的,服务器就将文档返回。有些授权算法会
    在可选的Authentication-Info首部返回一些与授权会话相关的附加信息。

基本认证的安全缺陷

  1. 基本认证会通过网络发送用户名和密码,这些用户名和密码以一种很容易解码的形式表示,不安全
  2. 即使密码是一更难解码的方式加密的,第三方用户仍然可以捕获修改过的用户名和密码,并将
    修改过的用户名和密码一次一次的重放给原始服务器。
  3. 基本认证没有提供任何针对代理和作为中间人的中间节点防护措施,他们没有修改认证首部,但
    却修改了报文的其余部分,这样就严重的改变了事务的本质。