在 Houndify API Docs for Authentication 中,您有以下内容块:
验证请求的示例
假设我们有以下信息:
UserID: ae06fcd3-6447-4356-afaa-813aa4f2ba41
RequestID: 70aa7c25-c74f-48be-8ca8-cbf73627c05f
Timestamp: 1418068667
ClientID: KFvH6Rpy3tUimL-pCUFpPg==
ClientKey: KgMLuq-k1oCUv5bzTlKAJf_mGo0T07jTogbi6apcqLa114CCPH3rlK4c0RktY30xLEQ49MZ-C2bMyFOVQO4PyA==
按以下格式连接 UserID 字符串、RequestID 字符串和 TimeStamp 字符串:
{user_id};{request_id}{timestamp}
使用示例中的值,在这种情况下,预期的输出将是:
ae06fcd3-6447-4356-afaa-813aa4f2ba41;70aa7c25-c74f-48be-8ca8-cbf73627c05f1418068667
使用解码的 ClientKey 对消息进行签名。结果是一个 32 字节的二进制字符串(我们无法直观地表示)。然而,在 base-64 编码之后,签名是:
myWdEfHJ7AV8OP23v8pCH1PILL_gxH4uDOAXMi06akk=
然后客户端生成两个身份验证标头Hound-Request-Authentication和Hound-Client-Authentication。
Hound-Request-Authentication 标头由以下格式的 UserID 和 RequestID 连接而成:
{user-id};{request-id}
. 继续上面的示例,此标头的值将是:Hound-Request-Authentication:ae06fcd3-6447-4356-afaa-813aa4f2ba41;70aa7c25-c74f-48be-8ca8-cbf73627c05f
Hound-Client-Authentication 标头由以下格式的 ClientID、TimeStamp 字符串和签名组成:
{client-id};{timestamp};{signature}
. 继续上面的示例,此标头的值将是:Hound-Client-Authentication: KFvH6Rpy3tUimL-pCUFpPg==;1418068667;myWdEfHJ7AV8OP23v8pCH1PILL_gxH4uDOAXMi06akk=
对于数字 3,它显示“使用解码的 ClientKey 签署消息”。“message”和“ClientKey”是两个不同的字符串。
我的问题:你如何用另一个字符串签署一个字符串,即这到底是什么意思?你将如何在 JavaScript 中做到这一点?
var message = 'my_message';
var key = 'signing_key';
//??what next??
我试图弄清楚这一切,以便我可以在 Postman 中创建一个预请求脚本来执行正确的 HmacSHA256 哈希。