API 需要 HMAC 认证 JMeter

问题描述

我在 Jmeter 中设置 API 测试时出错,同样在 POSTMAN 中工作正常。 使用 HMAC 身份验证。 我对该工具有一些新的 Jmeter 基本知识。
https://developer.firstdata.com/marketplace/api/authentication.html?shell#authentication

邮递员预请求脚本

Postman Pre-request Script

和 Postman Header 详细信息

And Postman Header details

邮递员 API 响应工作正常。 与在 Jmeter 中的工作相同,但我收到的响应消息为 {"message":"HMAC 签名无法验证,HMAC 身份验证需要有效日期或 x-date 标头"} 我添加了 JSR223 PostProcessor 和 HTTP Header Manager。 下面是两张图片的详细信息。

** JMeter - JSR223 后处理器**

JSR223 PostProcessor

JMeter HTTP 标头管理器

HTTP Header Manager

解决方法

从 Postman 复制和粘贴代码在 JMeter 中不起作用,因为:

  • Postman 是一个浏览器扩展程序,能够执行 JavaScript,根据 JMeter project main page

    JMeter 不是浏览器,它在协议级别工作。就 Web 服务和远程服务而言,JMeter 看起来像一个浏览器(或者更确切地说,多个浏览器);但是 JMeter 不会执行浏览器支持的所有操作。特别是,JMeter 不执行 HTML 页面中的 Javascript。它也不会像浏览器那样呈现 HTML 页面(可以将响应视为 HTML 等,但时间不包含在任何示例中,并且一次只显示一个线程中的一个示例)。>

  • 如果您尝试运行 JavaScript 代码,则需要从下拉列表中选择合适的语言 enter image description here

  • JMeter 不包含 CryptoJS 库,您需要在运行 JavaScript 之前下载并加载它

  • Since JMeter 3.1 it's recommended to use Groovy language for scripting 因为此选项可提供最高性能,尤其是在涉及“繁重”加密操作时,因此我建议您在 Groovy 中重新编写代码

  • 我看到你喜欢屏幕截图,所以我在此处包含了一个示例实现作为屏幕截图:

    enter image description here

有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It