HTTP basic 认证

为了确保资源的非法访问,HTTP采用两种认证方式,一种为basic,另外一种为digest(摘要认证)。

basic是最基本也是最简单的一种认证方式。认证的过程大概可分为以下几个步骤:

1. 用户请求受保护的资源,例如:

GET http://192.168.2.1/ HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: 192.168.2.1

2. 服务端返回401未认证的错误

HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=GB2312
Date: Wed, 28 Aug 2013 19:28:03 GMT
Last-Modified: Wed, 28 Aug 2013 19:28:03 GMT
Accept-Ranges: bytes
Connection: close
Cache-Control: no-cache,no-store
WWW-Authenticate: Basic realm="abcdalom.com"


401 Unauthorized

401 Unauthorized


401错误的HTTP头部中都会带有WWW-Authenticate字段,其中指明了服务端支持的认证方式,一般为Basic(基本认证)和 Digest(摘要认证)两种可选值。在上文的回应中可见,服务端支持的认证方式为基本认证。


3. 加入用户信息,重新发送请求

需要在HTTP头部中加入Authorization字段,并显示指明认证方式(认证方式可由第2步获取),紧接着就是一个空格和BASE64编码的“用户名:密码”。例如用户名为admin,密码为12345,则请求头部如下所示,其中YWRtaW46MTIzNDU=为 “admin:12345”的base64编码值。

GET http://192.168.2.1/ HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Authorization: Basic YWRtaW46MTIzNDU=
Host: 192.168.2.1


4. 服务端验证用户信息是否合法,如果合法请返回用户请求的资源。否则依然回应401的错误。





你可能感兴趣的:(web)