尝试使用ColdFusion为API身份验证创建HMAC-SHA1哈希

时间:2013-06-25 21:32:47

标签: coldfusion hmacsha1

我在这方面已经结束了,我只是找不到合适的代码组合来完成这项工作。我正在尝试为API查询创建身份验证摘要。我尝试了很多CFML函数(例如:Coldfusion HMAC-SHA1 encryptionHMAC SHA1 ColdFusion),但我没有提出API文档中引用的相同结果。这是一个例子(基本上是带有换行符作为分隔符的请求头的元素。):

application/xml\nTue, 30 Jun 2009 12:10:24 GMT\napi.summon.serialssolutions.com\n/2.0.0/search\ns.ff=ContentType,or,1,15&s.q=forest\n

这是关键:

ed2ee2e0-65c1-11de-8a39-0800200c9a66

根据文档应该导致:

3a4+j0Wrrx6LF8X4iwOLDetVOu4=

当HMAC哈希转换为Base64时。任何想法将非常感谢!

1 个答案:

答案 0 :(得分:4)

问题是输入字符串,而不是函数。 first one工作正常。虽然我会将charset更改为UTF-8,或者将其作为参数。否则,结果取决于jvm默认值,这可能并不总是正确的,并且可以更改哪个会破坏代码。

确认您正在构建示例字符串。您是否使用chr(10)换行?注意:它还必须结束新行。

<强>代码:

<cfscript>
    headers = [ "application/xml"
                    , "Tue, 30 Jun 2009 12:10:24 GMT"
                    , "api.summon.serialssolutions.com"
                    , "/2.0.0/search"
                    , "s.ff=ContentType,or,1,15&s.q=forest"
                ];
    theText = arrayToList(headers, chr(10)) & chr(10);
    theKey = "ed2ee2e0-65c1-11de-8a39-0800200c9a66";
    theHash = binaryEncode( hmacEncrypt(theKey, theText), "base64");
    writeDump(theHash);
</cfscript>

<强>结果:

3a4+j0Wrrx6LF8X4iwOLDetVOu4=