尝试使用R和PostMan连接到documentDB Web API时出现以下问题。
在DocumentDB文档中,向Web API提问的方法是使用base64 hash编写Authorization标头。
在R中我试图计算签名并直接用邮递员测试标题。 但我每次都得到一个http 401。 这是我的R代码:
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<div id="test1">
<div id="test2">
Hello
</div>
</div>
<div id="test3">
World
</div>
<div id="test4">
<div id="test5">
</div>
<div id="test6">
<div id="test7">
</div>
</div>
</div>
&#34; key&#34;是门户网站的主要密钥。 然后,按照Azure文档,我的标题是:
ALTER VIEW invoice
AS
SELECT COVERT(char(8), INV_DATE, 10) -- will get you dd-MM-yy (no century!)
FROM dbo.v_cust_invoices
我将其粘贴到PostMan中,标题为x-ms-version,date和x-ms-date。
但它不起作用..
我现在被困住,有没有人有想法?我使用错误的R功能吗?错误的密钥,有没有办法获得有关不匹配的更多信息?
网络API响应是:
toHash <- enc2utf8("get\ncolls\ndbs/toto/colls/testtoto\nsun, 08 may 2016 06:43:05 gmt\n\n")
hash <- hmac(key, toHash, "sha256")
base64(hash)
答案 0 :(得分:1)
我发现自己错了。
Azure门户中提供的令牌是base64编码的。因此必须对其进行解码:
RCurl::base64Decode(key, mode="raw")
以便将其与digest::hmac
函数一起使用。还必须在此raw = TRUE
函数中指定hmac
。