LoadRunner 和 HTTP 401 验证

简介: 原文:https://ptfrontline.wordpress.com/2009/12/23/loadrunner-http-401-authentication/译文(转载请标注smooth的博客):        在笔者最近做的一个项目中,偶然发现了一个HTTP验证机制方面的有趣问题。

原文:https://ptfrontline.wordpress.com/2009/12/23/loadrunner-http-401-authentication/

译文(转载请标注smooth的博客)

        在笔者最近做的一个项目中,偶然发现了一个HTTP验证机制方面的有趣问题。

        本人有一个设备对设备(M2M)的接口,在这个接口上用户(客户端)使用HTTP验证来确认是他们自己向服务器传输数据。在这种情况下,没有收到来自服务器对于HTTP 401的响应,因为该用户(客户端)在初始请求中包含了身份验证的信息。

        笔者发现LoadRunner不会出现相同的情况。它会在实际发送验证信息之前,先等待HTTP 401响应。如果我们模拟一个专为使用者服务的网络服务,那么这是一个正确的动作,但是在本次案例中,LoadRunner是执行了一个额外的POST请求,而这导致了灾难性的结果,因为这样我一共执行了两个额外的POST请求!

       这带来的后果是,我们向整个网络提交了双倍的数据量、向服务器提交了双倍的请求,并因此使连接到服务器的实际负载和吞吐量加倍!

       为了解决这个问题,笔者只能在初始请求中包含验证表头。为实现这一操作,笔者使用了 Base64Encoder ( Base64编码/解码 工具)制作所需的 HTTP 验证基础表头信息,然后使用 web_add_header 功能添加到请求中。

        以下是本项目中体现如何创建和使用自定义验证表头的代码段:

// Must remove stdauth mechanism since this causes 2POSTS instead of one

// web_set_user( "{Username}","{Password}", "{Domain}:8000" );

 

// Create Base64 encoded string

b64_encode_string( "{Username}:{Password}","BasicAuth" );   //b64_encode_string函数在网上能搜索到,在此不另提供

 

// Add HTTP Authorization header "Authorization:Basic XXXXXXXXXXXXXXXXXX==\r\n"

web_add_header("Authorization",lr_eval_string("Basic {BasicAuth}"));

 

lr_start_transaction("Custom_HTTP_Auth");


web_custom_request("Custom_HTTP_Auth",

    "Method=POST",

    "EncType=text/xml;charset=\"UTF-8\"",

    "URL=http://{Domain}/{Path}/{Document}"

    "BodyFilePath=XML.xml",

   LAST);

 

lr_end_transaction("Custom_HTTP_Auth",LR_AUTO);


       此外我还发现了另外一种可能有效的办法。这种方法目前只用LR11.03试验过有效。参见如下:

// Standard Web Set User here

web_set_user( "{Username}","{Password}", "{Domain}:8000" );

 

// Set UNDOCUMENTED socket option to make LR sendAuthentication headers with every request to the domain

web_set_sockets_option("INITIAL_BASIC_AUTH","1");

 

lr_start_transaction("Custom_HTTP_Auth");

 

// Now the HTTP request adds the Authentication headerautomatically without receiving

// a HTTP 401 first and then sending the auth header.

web_custom_request("Custom_HTTP_Auth",

    "Method=POST",

    "EncType=text/xml;charset=\"UTF-8\"",

    "URL=http://{Domain}/{Path}/{Document}"

    "BodyFilePath=XML.xml",

    LAST);

 

lr_end_transaction("Custom_HTTP_Auth",LR_AUTO);
目录
相关文章
|
16天前
|
安全 算法 量子技术
【HTTPS】中间人攻击和证书的验证
【HTTPS】中间人攻击和证书的验证
38 1
|
17天前
|
关系型数据库 MySQL 数据库
vertx 的http服务表单提交与mysql验证
本文介绍了如何使用Vert.x处理HTTP服务中的表单提交,并通过集成MySQL数据库进行验证,包括项目依赖配置、表单HTML代码和完整的Vert.x服务代码。
12 2
|
17天前
|
存储 缓存 安全
https访问提示不安全,证书密钥验证上如何解决
【10月更文挑战第4天】访问提示不安全,证书密钥验证上如何解决
108 2
|
18天前
|
安全 网络安全 数据安全/隐私保护
HTTPS 请求中的证书验证详解(Python版)
HTTPS 请求中的证书验证详解(Python版)
38 0
|
2月前
|
Web App开发 缓存 网络协议
HTTP3版本和实现验证
这篇文章详细介绍了HTTP3协议及其与HTTP2的比较,解释了HTTP3基于QUIC协议的工作原理,包括0-RTT恢复、H3-29草案等技术细节,并提供了验证网站HTTP3支持和浏览器支持的工具和方法。
38 1
|
2月前
|
API C#
【Azure App Service】验证App Service接受HTTP 2.0请求
【Azure App Service】验证App Service接受HTTP 2.0请求
|
5月前
|
安全 数据安全/隐私保护
HTTP请求处理 get/post工具类 验证网络DEMO
HTTP请求处理 get/post工具类 验证网络DEMO
63 0
|
数据建模 网络安全 数据安全/隐私保护
三种验证类型的https证书
https证书即SSL证书,其三种验证类型是指DV、OV、EV。不同的验证类型适合不同的网站
114 0
三种验证类型的https证书
|
Ubuntu
sudo apt-get update出现W: GPG 错误:http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名:
sudo apt-get update出现W: GPG 错误:http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名:
341 0
sudo apt-get update出现W: GPG 错误:http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名: