Http Basic Authentication Scheme学习及实验

 

1. Basic Authentication Scheme

    用户代理必须对于每个领域(realm)通过用户标识(user-ID)及口令来对自身进行授权,这是基本授权方案的工作模式。Realm值应当被看作不透明的字符串,该值将用于同服务器端其它的realm值相比较。只有用户标识及口令通过受保护资源的认证,服务器才会给请求授权。授权参数没有可选项。在接收到对受保护区域的未经认证的资源请求时,服务器应当回应一个challenge,格式如下:

WWW-Authenticate: Basic realm="WallyWorld"

 

"WallyWorld"是由服务器分配的字符串,用于对请求URI所指定的受保护资源进行标识。

 

 

 

    为了接收授权,客户端需要在基于64位(base64 )的证书中发送用户标识及口令,中间用冒号':'分隔。格式如下:

 

basic-credentials = "Basic" SP basic-cookie

basic-cookie      = <base64 [5] encoding of userid-password,
                            except not limited to 76 char/line>

userid-password   = [ token ] ":" *TEXT

 

如果用户代理希望发送用户标识"Aladdin"和口令“open sesame”,应当遵循下面形式:

 

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

使用Python验证下这个值是否符合上述描述, 即验证"客户端需要在基于64位(base64 )的证书中发送用户标识及口令"


 2. Tomcat中的Basic Authentication Scheme

 

 

    Tomcat管理页面使用 Basic Authentication Scheme进行认证。我们可以试验一下。 首先访问这个管理页面


Http Basic Authentication Scheme学习及实验

发出的HTTP请求如下:

 

Http Basic Authentication Scheme学习及实验

接收到的HTTP响应如下。通过www-Authenticate请求头我们可以看到这个页面使用基本授权方式。


 3. 伪造HTTP请求通过Tomcat认证

首先用浏览器访问http://127.0.0.1:8080/manager/status,并用Fiddler捕获这个HTTP请求

GET /manager/status HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Cache-Control: max-age=0
Authorization: Basic Og==
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://127.0.0.1:8080/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=9484EC2A4599C23353A727AD7589692C; JSESSIONID=E4376078FF561C9E4768CA23BA6E3261

 这个请求的HTTP响应如下,显示未通过Tomcat认证

HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 08:00:00 CST
WWW-Authenticate: Basic realm="Tomcat Manager Application"
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Sat, 27 Oct 2012 02:36:28 GMT
 

使用Fiddler请求构造功能发出一个新的HTTP请求。 注意替换Authorization请求头为新值。 下面将描述新值的生成过程。

Http Basic Authentication Scheme学习及实验

按照之前的描述, 客户端需要在基于64位(base64 )的证书中发送用户标识及口令。 我们按照这个步骤操作。

 

1. 通过Tomcat的配置文件可以得到用户标识和口令为tomcat和secret



2. 生成用户标识及口令对应的base64编码。

 

 

3. 将伪造的http请求中的Authorization头的值替换成第2步中生成的值。 并发出这个请求。

 

4. 结果如下。 浏览器发出的请求, 认证失败;使用 Fiddler伪造的请求, 认证成功


Http Basic Authentication Scheme学习及实验

 

 

 

 

 

 

 

你可能感兴趣的:(Authentication)