HTTP请求报头: Authorization
HTTP响应报头: WWW-Authenticate
HTTP认证 基于 质询 /回应( challenge/response)的认证模式。
基本认证 basic authentication ← HTTP1.0提出的认证方法
客户端对于每一个realm,通过提供用户名和密码来进行认证的方式。
包含密码的明文传递
基本认证步骤:
1. 客户端访问一个受http基本认证保护的资源。
2. 服务器返回401状态,要求客户端提供用户名和密码进行认证。
401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"
3. 客户端将输入的用户名密码用Base64进行编码后,采用非加密的明文方式传送给服务器。
Authorization: Basic xxxxxxxxxx.
4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。
特记事项:
1. Http是无状态的,同一个客户端对同一个realm内资源的每一个访问会被要求进行认证。
2. 客户端通常会缓存用户名和密码,并和authentication realm一起保存,所以,一般不需要你重新输入用户名和密码。
3. 以非加密的明文方式传输,虽然转换成了不易被人直接识别的字符串,但是无法防止用户名密码被恶意盗用。
HTTP的两个官方的认证协议:基本认证和摘要认证
认证的四个步骤:
请求: 客户端发起一条请求;第一条请求没有认证消息;
质询: 服务器对客户端进行质询;返回一条401 Unauthorized响应,并在www-Authenticate首部说明如何以及在哪里进行认证;一般指定对哪个安全域进行认证;
授权:客户端收到401质询,弹出对话框,询问用户名和密码,用户输入用户名和密码后,客户端会用一个冒号将其连接起来,编码成“经过扰码的”Base-64表示形式,然后将其放在Authorization首部中回送;
成功: 服务器对用户名和密码进行解码,验证它们的正确性,然后用一条HTTP 200 OK报文返回所请求的报文;