`
410063005
  • 浏览: 180019 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Http Basic Authentication Scheme学习及实验

    博客分类:
  • http
 
阅读更多

 

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请求如下:

 

接收到的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请求头为新值。 下面将描述新值的生成过程。

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

 

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



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

 

 

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

 

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


 

 

 

 

 

 

 

  • 大小: 16.8 KB
  • 大小: 68.1 KB
  • 大小: 29.9 KB
  • 大小: 17.9 KB
  • 大小: 42.5 KB
  • 大小: 39.6 KB
  • 大小: 14.1 KB
  • 大小: 70.4 KB
分享到:
评论

相关推荐

    aspnet-core-3-basic-authentication-api:ASP.NET Core 3.1-基本的HTTP身份验证API

    这可以通过调用`AddAuthentication`方法,并指定`BasicAuthenticationDefaults.AuthenticationScheme`作为认证方案来完成。 ```csharp services.AddAuthentication(BasicAuthenticationDefaults.Authentication...

    aspnetcore-authentication-basic:易于使用且非常轻巧的Microsoft风格的ASP.NET Core基本方案身份验证实现

    AspNetCore.Authentication.Basic ... 在,如下所示,在ConfigureServices方法services.AddAuthentication(BasicDefaults.AuthenticationScheme).AddBasic(options =&gt; { options.Realm = "My App"; }

    RFC2617-cn 中文版

    基本认证方案(Basic Authentication Scheme) 基本认证方案是一种简单的认证机制,它使用明文方式传输用户名和密码。这种方法不是安全的,因为用户名和密码可以被轻易地截获和解密。因此,基本认证方案不应该单独...

    C#进阶系列 WebApi身份认证解决方案推荐:Basic基础认证

    本文将详细介绍Basic认证的原理及实现方法。 一、为什么需要身份认证 WebApi服务若无身份认证,任何知道接口URL的人都能通过HTTP请求访问服务,这可能导致数据泄露或被恶意篡改。因此,为保护API,我们需要启用...

    ASP.NET Core 实现基本认证的示例代码

    .AddScheme, BasicAuthenticationHandler&gt;(BasicAuthenticationScheme.DefaultScheme, null); // 在Startup.cs的Configure方法中添加中间件 app.UseWhen(context =&gt; context.Request.Path.StartsWithSegments("/...

    OpenDaylight REST API研究

    Topology REST API 的 Authentication scheme 是 HTTP Basic,Authentication realm 是 opendaylight,Transport 是 HTTP 和 HTTPS。默认情况下,使用 HTTPS 进行身份验证。 Topology REST API 可以提供以下服务: ...

    josso+tomcat配置之josso服务器配置(一)[参考].pdf

    -- Basic Authentication Scheme --&gt; &lt;authentication-scheme&gt; &lt;name&gt;basic-authentication &lt;class&gt;org.josso.auth.scheme.UsernamePasswordAuthScheme &lt;!-- =================================================...

    WebGoat文档pdf版

    - **2.4.3 Basic Authentication (基本身份验证)**:介绍HTTP基本认证的工作原理。 - **2.4.4 Multi-Level Login 1 & 2 (多级登录1&2)**:演示多层身份验证的实现方式及其安全性考虑。 ##### 2.5 BUFFER OVERFLOWS ...

    Spring.MVC.Cookbook.1784396419

    Authenticate over REST with a BASIC authentication scheme and OAuth2; handle roles and permissions Document and publish your REST API using Swagger and Swagger UI Scale your Spring web application ...

    ASP.NET Core中实现用户登录验证的最低配置示例代码

    options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme; }) .AddCookie(); ``` 这段...

    华为交换机配置教程

    [SwitchA-ui-vty0-4]authentication-mode scheme ``` **1.4 配置登录用户的级别** ```bash [SwitchA-ui-vty0-4]user privilege level 3 ``` **1.5 添加TELNET管理的用户** ```bash [SwitchA]local-user huawei ...

    Telnet用户认证、授权、计费配置,SSH password认证

    [RTA-ui-vty0-4]authentication-mode scheme ``` 这里`scheme`指定了使用AAA系统来进行认证。 - 创建本地用户telnet及其密码和服务类型: ```shell [RTA]local-user telnet [RTA-luser-telnet]service-type ...

    华为交换机配置教程汇总

    [SwitchA-ui-vty0-4] authentication-mode scheme ``` 4. **配置登录用户的权限级别**: ```bash [SwitchA-ui-vty0-4] user privilege level 3 ``` 5. **添加TELNET管理用户**: ```bash [SwitchA] local-...

    关于Drawin Streaming Server的一些配置资料

    3. **Authentication Scheme**:DSS支持不同的身份验证方式,如Digest和Basic。Digest认证更安全,而如果需要与使用QuickTime 4的客户端兼容,应选择Basic认证。 4. **Streaming on Port 80**:默认情况下,DSS在80...

    darwin使用方法

    - **Authentication Scheme**:设置用户认证方案,默认为`Digest`。若使用QuickTime 4客户端,则需选择`Basic`。 - **Streaming on Port 80**:设置服务器是否使用80端口。如果不使用80端口,可以在`/etc/...

    NGINX conf 配置文件中的变量大全

    如果启用了基本认证(Basic Authentication),则存储通过认证的用户名。 #### 11. $request_filename 此变量结合root或alias指令,用于确定请求的实际文件路径,常用于内部重写规则和访问控制。 #### 12. $query_...

    Network Security: Private Communication in a Public World, Second Edition

    Breaking an Encryption Scheme Section 2.3. Types of Cryptographic Functions Section 2.4. Secret Key Cryptography Section 2.5. Public Key Cryptography Section 2.6. Hash Algorithms Section ...

Global site tag (gtag.js) - Google Analytics