RESTAPIを介してWindowsAzureストレージアカウントにアクセスしようとすると、認証に問題が発生します。
リクエストを生成する方法を決定するために、次のリソースを読みました。
http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx
http://convective.wordpress.com/2010/08/18/examples-of-the-windows-azure-storage-services-rest-api/
Azure Blob Service REST APIは403エラーを返します:「リクエスト日付ヘッダーが指定されていません」
私の理解では、リクエストには4つの変数しかありません。サービスエンドポイントを決定する実際のURI、GMT時間の現在の日付プライマリアクセスキーアカウント名。
最初の2つはMSDNリソースからのもので、残りの2つはWindowsAzureポータルからのものです。
GET http://<account_name>.table.core.windows.net/ HTTP/1.1 x-ms-date: Sun, 24 Feb 2013 09:19:31 GMT x-ms-version: 2009-09-19 Authorization: SharedKey <account_name>:<primary_key> Accept-Charset: UTF-8 Accept: application/atom+xml,application/xml DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 1.0;NetFx Host: <account_name>.table.core.windows.net
アカウント名と主キーが正しいこと、および他の投稿からの提案に基づいてx-ms-dateタイムスタンプが15分以内であることを確認しました。
次の応答を受け取ります。
HTTP/1.1 403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
Content-Length: 437
Content-Type: application/xml
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: d78c2c11-8699-4737-9592-82813eac356e
Date: Sun, 24 Feb 2013 21:20:03 GMT
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>AuthenticationFailed</code>
<message xml:lang="en-US">Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:d78c2c11-8699-4737-9592-82813eac356e
Time:2013-02-24T21:20:03.2036675Z</message>
</error>
適切に認証するためのリクエストを修正するための提案はありますか?
また、Azure Storage Explorerユーティリティをダウンロードしてサービスにアクセスできたので、ストレージアカウントが有効で機能していることがわかりました。