2016-05-08 13 views
1

RとPostManを使用してdocumentDB Web APIに接続しようとすると、次の問題が発生します。DocumentDB Web APIへのアクセス(R

DocumentDBのドキュメントでは、Web APIに何かを問い合わせる方法は、Base64ハッシュでAuthorizationヘッダーを構成することです。

私は署名を計算して、郵便配達員と直接ヘッダをテストしようとしています。 しかし、私はここで、HTTP 401 たびに取得する私のRコードです:

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) 

「キー」は、主キーがポータルからもらったです。 そして、Azureのドキュメント以下、私のヘッダーは次のとおりです。

type=master&ver=1.0&sig=< thebase64(hash) > 

私は、ヘッダーのX-MS-バージョン、日付、およびX-MS-日付で郵便配達にそれを貼り付けています。

しかしit'isが機能していない..私は今こだわっている

、誰もがアイデアを持っていますか?間違ったR関数を使用していますか?キーが間違っていると、不一致に関する詳細情報を得る方法はありますか?

ウェブAPIレスポンスは、次のとおりです。

{ 
    "code": "Unauthorized", 
    "message": "The input authorization token can't serve the request. Please check that the expected payload is built as per the protocol, and check the key being used. Server used the following payload to sign: 'get\ncolls\ndbs/toto/colls/testtoto\nsun, 08 may 2016 06:43:05 gmt\n\n'\r\nActivityId: fadbfc0b-e298-418a-b56c-8114699fff91" 
} 

答えて

1

私は自分で間違っていたものを見つけました。

Azureポータルで指定されたトークンは、base64でエンコードされています。だから、それを復号化するために必須である:

RCurl::base64Decode(key, mode="raw") 

digest::hmac機能でそれを使用するために。このhmac機能内にraw = TRUEと指定することも必須です。