认证概念:
服务器需要通过某种方式来了解用户的身份,一旦服务器知道了用户的身份,就可以判定用户可以访问事务和资源了;通常通过用户名和密码;
HTTP响应/认证框架
HTTP认证模型:

质询/响应认证框架
HTTP的两个官方的认证协议:基本认证和摘要认证
认证的四个步骤:
请求: 客户端发起一条请求;第一条请求没有认证消息;
质询: 服务器对客户端进行质询;返回一条401 Unauthorized响应,并在www-Authenticate首部说明如何以及在哪里进行认证;一般指定对哪个安全域进行认证;
授权:客户端收到401质询,弹出对话框,询问用户名和密码,用户输入用户名和密码后,客户端会用一个冒号将其连接起来,编码成“经过扰码的”Base-64表示形式,然后将其放在Authorization首部中回送;
成功: 服务器对用户名和密码进行解码,验证它们的正确性,然后用一条HTTP 200 OK报文返回所请求的报文;

基本认证实例

基本认证首部
Base-64编码:会把一个8位字节序列转划分成一些6位的块,用每个6位的块在一个特殊在一个特殊的由64个字符组成的字母表中选择一个字符。

编码实例
安全域:将受保护的文档组织成一个安全域;每个安全域都可以有不同的授权用户集;会在www-Authenticate首部包含realm指令;

服务器上的安全域

具有安全域的质询响应
代理认证
通过中间代理服务器实现对服务器内部资源和文档的统一访问控制;

与Web服务器的差异
状态码:407
首部:Proxy
基本认证的安全缺陷:
Base-64安全性不高,容易解密;使用SSL加密信道;使用摘要认证;
</div>