メニュー
アマゾン ウェブ サービス
全般的なリファレンス (Version 1.0)

署名バージョン 4 テストスイート

署名バージョン 4 をサポートする AWS クライアントの開発に役立つように、テストスイートのファイルを使用して、コードの署名プロセスの各ステップが正しく実行されることを確認できます。

テストスイートを入手するには、aws-sig-v4-test-suite.zip をダウンロードします。

各テストグループには、「署名バージョン 4 署名プロセス」で説明した各タスクを検証するのに使用できる 5 つのファイルが含まれています。各ファイルの内容は次のとおりです。

  • file-name.req— 署名対象のウェブリクエスト。

  • file-name.creq—生成された正規リクエスト。

  • file-name.sts—生成された署名対象文字列。

  • file-name.authzAuthorizationヘッダー。

  • file-name.sreq—署名されたリクエスト。

認証情報スコープとシークレットキー

テストスイートの例では、以下の認証情報スコープを使用します。

AKIDEXAMPLE/20150830/us-east-1/service/aws4_request

署名に使用するシークレットキーの例を示します。

wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY

例 - パラメーター付きのシンプルな GET リクエスト

次の例は、get-vanilla-query-order-key-case.req ファイルの署名対象のウェブリクエストを示しています。元のリクエストです。

GET /?Param2=value2&Param1=value1 HTTP/1.1 Host:example.amazonaws.com X-Amz-Date:20150830T123600Z

タスク 1: 正規リクエストを作成する

タスク 1: 署名バージョン 4 の正規リクエストを作成する」で説明している手順で、get-vanilla-query-order-key-case.req ファイルのリクエストを変更します。

GET /?Param2=value2&Param1=value1 HTTP/1.1 Host:example.amazonaws.com X-Amz-Date:20150830T123600Z

これにより、get-vanilla-query-order-key-case.creq ファイルで正規リクエストが作成されます。

GET / Param1=value1&Param2=value2 host:example.amazonaws.com x-amz-date:20150830T123600Z host;x-amz-date e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

  • パラメータは (文字コードによって) アルファベット順にソートされます。

  • ヘッダー名は小文字です。

  • x-amz-date ヘッダーと署名付きヘッダーの間に改行があります。

  • ペイロードのハッシュは空の文字列のハッシュです。

タスク 2: 署名文字列を作成する

正規リクエストのハッシュは以下の値を返します。

816cd5b414d056048ba4f7c5386d6e0533120fb1fcfa93762cf0fc39e2cf19e0

タスク 2: 署名バージョン 4 の署名文字列を作成する」で説明している手順で、アルゴリズム、リクエスト日、認証情報スコープ、正規リクエストハッシュを追加して、署名対象のリクエスト文字列を作成します。

結果として get-vanilla-query-order-key-case.sts ファイルが生成されます。

AWS4-HMAC-SHA256 20150830T123600Z 20150830/us-east-1/service/aws4_request 816cd5b414d056048ba4f7c5386d6e0533120fb1fcfa93762cf0fc39e2cf19e0

  • 2 行目の日付は、x-amz-date ヘッダーだけでなく、認証情報スコープの最初の要素とも一致します。

  • 最後の行は正規リクエストのハッシュの 16 進エンコード値です。

タスク 3: 署名を計算する

タスク 3: AWS 署名バージョン 4 の署名を計算する に説明している手順で、署名キーと、get-vanilla-query-order-key-case.sts file ファイルからの署名対象のリクエスト文字列を使用して、署名を作成します。

結果として get-vanilla-query-order-key-case.authz ファイルの内容が生成されます。

AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=b97d918cfa904a5beff61c982a1b6f458b799221646efd99d3219ec94cdf2500

タスク 4: 署名情報をリクエストに追加する

タスク 4: 署名情報をリクエストに追加する」で説明している手順で、タスク 3 で生成された署名情報を元のリクエストに追加します。たとえば、get-vanilla-query-order-key-case.authz の内容を取得し、Authorization ヘッダーに追加してから、その結果を get-vanilla-query-order-key-case.req に追加します。

これにより、get-vanilla-query-order-key-case.sreq ファイルに署名付きリクエストが作成されます。

GET /?Param2=value2&Param1=value1 HTTP/1.1 Host:example.amazonaws.com X-Amz-Date:20150830T123600Z Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=b97d918cfa904a5beff61c982a1b6f458b799221646efd99d3219ec94cdf2500