参考博文:HTTP协议详解
HTTP请求报头: Authorization
HTTP响应报头: WWW-Authenticate
HTTP认证是基于质询/回应(challenge/response)的认证模式。
一、基本认证 basic authentication(HTTP1.0提出的认证方法)
介绍
当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图:
假如用户名密码错误的话,服务器会返回401,如下图:
基本认证步骤:
服务器返回401状态,要求客户端提供用户名和密码进行认证。
(验证失败的时候,响应头会加上WWW-Authenticate: Basic realm="请求域"。)
401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"
客户端将输入的用户名密码用Base64进行编码后,采用非加密的明文方式传送给服务器。
Authorization: Basic xxxxxxxxxx.
特记事项:
优点:
缺点:
例子:
这一个典型的HTTP客户端和HTTP服务器的对话,服务器安装在同一台计算机上(localhost),包含以下步骤:
客户端请求(没有认证信息):
GET /private/index.html HTTP/1.0
Host: localhost
(跟随一个换行,以回车(CR)加换行(LF)的形式)
服务端应答:
HTTP/1.0 401 Authorization Required
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>
客户端的请求(用户名""Aladdin",口令, password "open sesame"):
GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
(跟随一个空行,如上所述)