翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SWF の HMAC-SHA 署名の生成
Amazon SWF へのリクエストはすべて認証されている必要があります。AWS SDK は自動的にリクエストに署名し、トークンベースの認証を管理します。ただし、独自の HTTP POST
リクエストを作成する場合は、リクエストの認証の一部として HTTP POST Header
コンテンツの x-amzn-authorization
値を作成する必要があります。
ヘッダーの書式設定の詳細については、「HTTP ヘッダーの内容」を参照してください。AWS バージョン 3 署名の AWS SDK for Java 実装については、AWSSigner.java
リクエスト署名の作成
HMAC-SHA リクエスト署名を作成する前に、AWS 認証情報 (アクセスキー ID とシークレットキー) を取得する必要があります。
重要
SHA1 または SHA256 のいずれかを使用してリクエストに署名できます。ただし、署名プロセス全体で同じ方法を使用するようにしてください。選択するメソッドは、HTTP ヘッダーの Algorithm
名の値と一致する必要があります。
リクエストの署名を作成するには
-
HTTP リクエストヘッダーの正規形式を作成します。HTTP ヘッダーの正規形式には次のものが含まれます。
-
host
-
x-amz-
で始まるヘッダー要素
含まれるヘッダーの詳細については、「HTTP ヘッダーの内容」を参照してください。
-
各ヘッダー名と値のペアについて、ヘッダー名 (ヘッダー値ではない) を小文字に変換します。
-
カンマ区切りのヘッダー値にヘッダー名のマップを作成します。
x-amz-example: value1 x-amz-example: value2 => x-amz-example:value1,value2
詳細については、「RFC 2616 のセクション 4.2
」を参照してください。 -
ヘッダー名と値のペアごとに、名前と値のペアを
headerName:headerValue
形式の文字列に変換します。headerName
とheaderValue
の両方の先頭と末尾にある空白を削除します。コロンの前後に空白が無いようにします。x-amz-example1:value1,value2 x-amz-example2:value3
-
最後の文字列も含め、変換された各文字列の後に改行 (
U+000A
) を挿入します。 -
変換された文字列のコレクションをヘッダー名ごとに並べ替えます。
-
-
以下の項目を含む署名文字列の値を作成します。
-
1
行目: HTTP メソッド (POST
)、その後に改行が続きます。 -
2
行目: リクエスト URI (/
)、その後に改行が続きます。 -
3
行目: 空の文字列、その後に改行が続きます。注記
通常、クエリ文字列はここに表示されますが、Amazon SWF ではクエリ文字列を使用しません。
-
4–n
行目: ステップ 1 で作成した正規化されたリクエストヘッダーを表す文字列。改行が続きます。この改行はヘッダーと HTTP リクエストの本文の間に空白行を作成します。詳細については、「RFC 2616」を参照してください。 -
リクエストの本文、改行は続きません。
-
-
署名文字列の値の SHA256 または SHA1 ダイジェストを計算します。プロセス全体で同じ SHA メソッドを使用します。
-
前の手順の結果として得られた値の SHA256 または SHA1 ダイジェスト (使用した方法に応じる) と、
GetSessionToken
API アクションを使用した AWS Security Token Service の一時的なシークレットアクセスキーのいずれかを使用して、HMAC-SHA を計算して Base64 エンコードします。注記
Amazon SWF では、Base64 エンコードされた HMAC-SHA 値の末尾に等号 (
=
) が必要です。Base64 エンコードルーチンに等号が追加されていない場合は、値の最後に 1 を追加します。Amazon SWF およびその他の AWS サービスで一時的なセキュリティ認証情報の使用方法の詳細については、「IAM ユーザーガイド」の「IAM で機能する AWS サービス」を参照してください。
-
結果の値を、Amazon SWF への HTTP リクエストの
x-amzn-authorization
ヘッダーのSignature
名の値として配置します。 -
Amazon SWF はリクエストを認証し、指定されたオペレーションを実行します。