【问题标题】:Signing a request with a hmacSHA25 signature in Postman using a pre-request script for NiceHash API使用 NiceHash API 的预请求脚本在 Postman 中使用 hmacSHA25 签名对请求进行签名
【发布时间】:2021-07-29 01:13:18
【问题描述】:

我正在尝试签署访问NiceHash API 的请求。

请在此处查看签署请求的要求: https://www.nicehash.com/docs/

postman.setGlobalVariable("hmac", CryptoJS.HmacSHA256(pm.request.headers, 'mySecret'));

这是我的X-Auth Header 的样子: X-Auth: my-key:{{hmac}}

我感觉我不满足 HmacSHA256 函数的输入参数。他们说:

输入是一个字节数组,由使用零字节的有序字段组成 (0x00) 作为分隔符。第一个字段之前没有分隔符或 在最后一个字段之后。某些字段始终为空,在这种情况下 分隔符立即一个接一个。如果转换 HTTP 标头 值,以及从字符串到字节表示的 url 部分,你应该 使用 ISO-8859-1 编码。对于请求正文,您应该使用原始字节 因为它们被发送到服务器。对于 JSON 消息,字符 编码应始终为 UTF-8。

任何想法我做错了什么?我不断收到未经授权的401

【问题讨论】:

    标签: javascript postman postman-pre-request-script


    【解决方案1】:

    您似乎错过了他们的规格。您引用的内容后面是您应该按顺序包含的有序字段列表

    • API 密钥
    • X-Time 请求标头值
    • X-Nonce 请求标头值
    • 空字段
    • X-Organization-Id 请求标头值
    • 空字段
    • 请求方法
    • 请求路径
    • 请求查询字符串
    • 请求正文

    应该逐个字段地遵循此列表并用于计算签名,使用此 0x00 作为字段之间的分隔符,采用特定编码和跳过空字段的规则。

    相反,您似乎只是使用 pm.request.headers 作为 HMAC 参数。不确定该对象的确切结构是什么,但我非常怀疑它是否包含上述所有字段,顺序正确且字段之间的分隔符正确。

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 2017-01-25
      • 2023-03-25
      相关资源
      最近更新 更多