Set Blob Properties API (http://msdn.microsoft.com/en-us/library/windowsazure/hh452235) への単純な REST 呼び出しを行って、ログのオン/オフを切り替えようとしています。BLOB プロパティを取得するための REST API 呼び出しが正常に機能するようになったので、ハッシュ アルゴリズム、ヘッダー設定、および認証署名の作成が機能することはわかっていますが、プロパティの設定側では機能していないようです。認証ヘッダーでエラーが発生し続けるので、そこで何かをしていないことがわかります。
作成中のものを下にコピーし、最終的にハッシュして認証ヘッダー文字列に入れました。オンライン ドキュメント (http://msdn.microsoft.com/en-us/library/windowsazure/dd179428) は、この特定の種類の BLOB 要求に絶対に必要なフィールドを特定するのに実際には役立ちません。それらのほとんどを入力しますが、入力内容に関係なく、違いの応答が得られないようです。共有キーライト認証も試しました。これは、はるかに軽量であるため推奨されますが、そうではありませんこれらの5つのフィールドすべてに入力すると、どちらかが機能するようです。
Blob Services の共有キー認証:
PUT\n
\n
\n
130\n
(MD5_CONTENT_HASH)
\n
\n
\n
\n
\n
\n
\n
x-ms-date:Tue, 19 Jun 2012 19:53:58 GMT\n
x-ms-version:2009-09-19\n
/(MY_ACCOUNT)/\n
comp:properties\n
restype:service
ここで私が見逃している明らかなものはありますか?値 (MD5_CONTENT_HASH) と (MY_ACCOUNT) はもちろん、リクエスト呼び出しを行うときに入力されます。プロパティを「GET」するための同様のリクエスト呼び出しは、送信時に正常に機能します。これとの唯一の違いは、コンテンツの長さとともに MD5_content を送信していることです。ただし、ここで明らかな何かが欠けている可能性があります。
どんなアドバイスでも大歓迎です!前もって感謝します。-ヴィンセント
詳細情報を編集:
使用しているプログラミング言語: Objective-C (iOS iPhone)
また、リクエストを行うために ASIHTTPRequest を使用しています。リクエスト setRequestMethod:@"PUT" を定義するだけで、リクエストの本文を作成し、それを NSData に変換して長さを計算します。appendPostData メソッドを介してリクエスト本文データをリクエストに添付します。次に、上記の認証文字列を作成し、全体をハッシュして、「Authorization」というヘッダーとしてリクエストに添付します。
私が使用しているリクエストボディ文字列:
<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1</Version></Logging></StorageServiceProperties>
これが不完全なリクエスト ボディであることはわかっていますが、完全な XML の作成に進むまで、「リクエスト ボディ要素がありません」などのエラーが発生するのを待つつもりでした。(それは私の問題でしょうか?)
サーバーから取得したエラー:
<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:accc4fac-2701-409c-b1a7-b3a528ce7e8a
Time:2012-06-20T14:36:50.5313236Z</Message><AuthenticationErrorDetail>The MAC signature found in the HTTP request '(MY_HASH)' is not the same as any computed signature. Server used following string to sign: 'POST
130
x-ms-date:Wed, 20 Jun 2012 14:36:50 GMT
x-ms-version:2009-09-19
/(MY_ACCOUNT)/
comp:properties
restype:service'.</AuthenticationErrorDetail></Error>
奇妙なのは、認証署名に渡したパラメーターの数に関係なく、サーバーから返されるエラーがそのように見えることです。
ご協力いただきありがとうございます。