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);
目录
相关文章
|
2月前
|
安全 数据安全/隐私保护
|
12月前
HTTP请求处理 get/post工具类 验证网络DEMO
HTTP请求处理 get/post工具类 验证网络DEMO
47 0
|
数据建模 网络安全 数据安全/隐私保护
三种验证类型的https证书
https证书即SSL证书,其三种验证类型是指DV、OV、EV。不同的验证类型适合不同的网站
103 0
三种验证类型的https证书
|
Shell 程序员 开发工具
711.踩坑指南:如何验证http协议的请求与响应格式?
711.踩坑指南:如何验证http协议的请求与响应格式?
101 0
|
网络协议 算法 网络安全
网络基础 记一次HTTPS证书验证测试过程
网络基础 记一次HTTPS证书验证测试过程
118 0
|
Java 测试技术 Android开发
Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
95 0
|
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: 由于没有公钥,无法验证下列签名:
243 0
sudo apt-get update出现W: GPG 错误:http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名:
|
供应链 安全 IDE
Http4s 存在输入验证不当漏洞(CVE-2023-22465)
Http4s 存在输入验证不当漏洞(CVE-2023-22465)
Http4s 存在输入验证不当漏洞(CVE-2023-22465)
|
开发者 iOS开发
iOS开发 - 用AFNetworking实现https单向验证,双向验证
iOS开发 - 用AFNetworking实现https单向验证,双向验证
358 0
iOS开发 - 用AFNetworking实现https单向验证,双向验证
|
iOS开发
iOS开发-https免证书验证
iOS开发-https免证书验证
144 0