如何在Jmeter中获取'authorization'标头的oauth_signature和oauth_nonce值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Jmeter中获取'authorization'标头的oauth_signature和oauth_nonce值相关的知识,希望对你有一定的参考价值。

如何在Jmeter的功能流中获取几个请求的'authorization'标头的oauth_signature和oauth_nonce值。

流程:1。使用user / pwd(JSON格式)登录>能够使用Jmeter登录并且响应将具有在后续请求中用作cookie的sessionid 2. cookie值被简单地传递(已经添加了HTTP cookie管理器) )3。登录Dashboard页面打开后需要sessionid,这也可以正常运行cookie 4.登录用户将执行'添加'和'提交'操作,其中有'授权'标题,授权标题的值显示为下面:OAuth realm =“xyz”,oauth_version =“1.0”,oauth_consumer_key =“testapp”,oauth_timestamp =“1517940303”,oauth_nonce =“abcd”,oauth_signature_method =“HMAC-SHA1”,oauth_signature =“uxO7B%2B%2Fbo% 3D”

当使用Blazemeter记录流时,捕获上面的授权标头并观察到这个'nonce'和'signature'值已经动态地改变后续请求。

请指导如何通过共同关系或任何其他方式捕获这些动态变化的值,以使测试计划始终成功运行。

目前,在运行测试时,无论何处传递此“授权”标头,它都会失败。

尝试使用HTTP授权管理器但是不确定以用户名/密码传递什么,因为在没有HTTP授权管理器的情况下,第一个请求的登录成功。

当试图获得有关如何生成签名值的详细信息时,请获取以下更新:使用oauth.js生成签名。这是供应商文件。但是在后端他们正在验证签名以及nonce和timestamp。

答案

nonce基本上是一个number used once所以你可以发送任何唯一的号码。在大多数情况下,它是从Unix纪元开始的当前时间戳(以毫秒为单位) - JMeter的__time() function产生的非常简单。

关于签名,它需要更复杂一点:

  1. 获取请求方法和URL
  2. 获取请求参数
  3. 百分比编码将要签名的每个键和值
  4. 按编码键按字母顺序对参数列表进行排序
  5. 对于请求参数的每个键/值对: 将编码的密钥附加到输出字符串 将=字符附加到输出字符串 将编码值附加到输出字符串。 如果您的请求具有> 1参数,则在键/值对之间附加&符号
  6. 使用消费者密钥,oauth令牌密钥并使用您的服务器期望的算法加密请求。

查看OAuth Core 1.0 Revision A文章,了解有关OAuth流的更多信息,希望它能说明为了执行经过身份验证的请求需要做些什么。您可能还会发现How to Run Performance Tests on OAuth Secured Apps with JMeter很有用。

以上是关于如何在Jmeter中获取'authorization'标头的oauth_signature和oauth_nonce值的主要内容,如果未能解决你的问题,请参考以下文章

JMeter:auth2.0认证流程(B2C架构)

如何在jmeter的测试报告中显示失败的responseData

如何在 JMeter 中获取 RPS 指标并将它们发送到 InfluxDb?

Jmeter中的百分位数功能

jmeter 如何 提取 cookie 中的值

如何在 Jmeter 中获取用于登录的 csrf 令牌