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" 

<HTML> 
<HEAD><TITLE>401 Unauthorized</TITLE></HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#483D8B" LINK="#2020ff" VLINK="#4040cc"> 
<H2>401 Unauthorized</H2>

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的错误。

 

posted @ 2017-03-27 15:55  Earic  阅读(887)  评论(0编辑  收藏  举报