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
分享到:
相关推荐
这可以通过调用`AddAuthentication`方法,并指定`BasicAuthenticationDefaults.AuthenticationScheme`作为认证方案来完成。 ```csharp services.AddAuthentication(BasicAuthenticationDefaults.Authentication...
AspNetCore.Authentication.Basic ... 在,如下所示,在ConfigureServices方法services.AddAuthentication(BasicDefaults.AuthenticationScheme).AddBasic(options => { options.Realm = "My App"; }
基本认证方案(Basic Authentication Scheme) 基本认证方案是一种简单的认证机制,它使用明文方式传输用户名和密码。这种方法不是安全的,因为用户名和密码可以被轻易地截获和解密。因此,基本认证方案不应该单独...
本文将详细介绍Basic认证的原理及实现方法。 一、为什么需要身份认证 WebApi服务若无身份认证,任何知道接口URL的人都能通过HTTP请求访问服务,这可能导致数据泄露或被恶意篡改。因此,为保护API,我们需要启用...
.AddScheme, BasicAuthenticationHandler>(BasicAuthenticationScheme.DefaultScheme, null); // 在Startup.cs的Configure方法中添加中间件 app.UseWhen(context => context.Request.Path.StartsWithSegments("/...
Topology REST API 的 Authentication scheme 是 HTTP Basic,Authentication realm 是 opendaylight,Transport 是 HTTP 和 HTTPS。默认情况下,使用 HTTPS 进行身份验证。 Topology REST API 可以提供以下服务: ...
-- Basic Authentication Scheme --> <authentication-scheme> <name>basic-authentication <class>org.josso.auth.scheme.UsernamePasswordAuthScheme <!-- =================================================...
- **2.4.3 Basic Authentication (基本身份验证)**:介绍HTTP基本认证的工作原理。 - **2.4.4 Multi-Level Login 1 & 2 (多级登录1&2)**:演示多层身份验证的实现方式及其安全性考虑。 ##### 2.5 BUFFER OVERFLOWS ...
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 ...
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 ...
[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-...
3. **Authentication Scheme**:DSS支持不同的身份验证方式,如Digest和Basic。Digest认证更安全,而如果需要与使用QuickTime 4的客户端兼容,应选择Basic认证。 4. **Streaming on Port 80**:默认情况下,DSS在80...
- **Authentication Scheme**:设置用户认证方案,默认为`Digest`。若使用QuickTime 4客户端,则需选择`Basic`。 - **Streaming on Port 80**:设置服务器是否使用80端口。如果不使用80端口,可以在`/etc/...
如果启用了基本认证(Basic Authentication),则存储通过认证的用户名。 #### 11. $request_filename 此变量结合root或alias指令,用于确定请求的实际文件路径,常用于内部重写规则和访问控制。 #### 12. $query_...
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 ...