mr_*_*cle 8 javascript ruby-on-rails hmac postman postman-pre-request-script
我正在尝试通过 Postman 模拟对我的 Rails 应用程序的 webhook POST 请求(在真实的工作流程中运行良好)。我找到了很多例子,但没有一个起作用 - 我不断收到 401 代码。我所做的是定义标题,Pre-request Script如下所示:
JSPre-request Script基于此文档
postman.setEnvironmentVariable("hmac", CryptoJS.HmacSHA256(request.data, \'my_secret_string\').toString(CryptoJS.digest));\nRun Code Online (Sandbox Code Playgroud)\n但我仍然收到 401 错误。
\n我用来触发 webhook 的外部 API 文档明确指出:
\n\n\n每个 Webhook 将使用 \xe2\x80\x8b X-AQID-Signature\xe2\x80\x8b 标头发送,该标头是通过使用 HMAC 方法和 SHA256 算法对请求的有效负载进行哈希处理而创建的,使用共享密钥作为盐。这意味着在收到有效负载后,您可以通过复制哈希方法来验证其完整性。
\n
正如我所说,它在现实生活工作流程中运行良好,因此我在邮递员实现中遇到了错误。我错过了什么?
\nsin*_*pop 11
您不需要设置任何环境变量,只需从脚本中添加标头。我在一个非常相似的案例中这样做了:
var signBytes = CryptoJS.HmacSHA256(pm.request.body.raw, 'YOUR_SECRET');
var signHex = CryptoJS.enc.Hex.stringify(signBytes);
pm.request.headers.add({
key: "HEADER_NAME",
value: signHex
});
Run Code Online (Sandbox Code Playgroud)
如果你需要Base64编码值,那么你可以这样做:
CryptoJS.HmacSHA256(pm.request.body.raw, 'YOUR_SECRET').toString(CryptoJS.enc.Base64);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12480 次 |
| 最近记录: |