認証方法
重要
AWS SDK または CLI を使用していない限り、リクエストの認証情報を提供する署名を計算するコードを記述する必要があります。AWS Signature Version 4 での署名計算は複雑な作業になる場合があるため、可能な限り AWS SDK または CLI を使用することをお勧めします。
認証情報は、次のいずれかの方法で表現できます。
HTTP 認可ヘッダー
HTTP Authorization
ヘッダーはリクエストを認証する最も一般的な方法です。すべての REST API 操作 (POST
リクエストを使用したブラウザベースのアップロードを除く) には、このヘッダーが必要です。認可ヘッダー値、および署名と関連オプションの計算方法の詳細については、「Amazon S3 API リファレンス」の「リクエストの認証: 認可ヘッダーの使用 (AWS Signature Version 4)」を参照してください。
以下は、Authorization
ヘッダー値の例です。この例では、読みやすいように改行が追加されています。コードでは、ヘッダーは連続した文字列である必要があります。アルゴリズムと認証情報の間にカンマはありませんが、他の要素はカンマで区切る必要があります。
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
次の表では、前述の例にある認可ヘッダー値のさまざまなコンポーネントについて説明しています。
コンポーネント | 説明 |
---|---|
認可 |
署名の計算に使用されたアルゴリズム。認証に AWS Signature Version 4 を使用する場合、この値を指定する必要があります。文字列は AWS Signature Version 4 ( |
Credential |
アクセスキー ID と、署名の計算に使用された日付、リージョン、およびサービスを含むスコープ情報。 この文字列の形式は次のとおりです。
Where: |
SignedHeaders |
|
署名 |
64 個の小文字の 16 進数文字で表現される 256 ビットの署名。以下に例を示します。 署名計算は、ペイロードの転送に選択したオプションによって異なります。 |
クエリ文字列パラメータ
クエリ文字列を使用すると、リクエスト全体を URL で表現できます。この場合、クエリパラメータを使用して、認証情報を含むリクエスト情報を提供します。リクエスト署名は URL の一部であるため、この種類の URL は署名付き URL と呼ばれることがよくあります。署名付き URL を使用して、クリック可能なリンクを HTML に埋め込むことができます。このリンクは最大 7 日間有効です。詳細については、「Amazon S3 API リファレンス」の「リクエストの認証: クエリパラメータの使用 (AWS Signature Version 4)」を参照してください。
署名付き URL の例を次に示します。この例では、読みやすいように改行が追加されています。
https://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ? X-Amz-Algorithm=AWS4-HMAC-SHA256 & X-Amz-Credential=<your-access-key-id>/20130721/us-east-1/s3/aws4_request & X-Amz-Date=20130721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host &X-Amz-Signature=<signature-value>
注記
URL 内の X-Amz-Credential
値には、読みやすさのためにのみ挿入された「/」文字が表示されています。実際には、%2F としてエンコードする必要があります。例:
&X-Amz-Credential=<your-access-key-id>%2F20130721%2Fus-east-1%2Fs3%2Faws4_request
次の表では、認証情報を提供する URL 内のクエリパラメータについて説明します。
クエリ文字列パラメータ名 | 説明 |
---|---|
X-Amz-Algorithm |
AWS Signature のバージョンと、署名の計算に使用したアルゴリズムを識別します。AWS Signature Version 4 では、このパラメータ値を |
X-Amz-Credential |
このパラメータは、アクセスキー ID の他に、署名が有効なスコープ (AWS リージョンおよびサービス) も指定します。この値は、次のセクションで説明する署名計算で使用するスコープと一致する必要があります。 このパラメータ値の一般的な形式は次のとおりです。
例: AWS リージョン文字列のリストについては、「AWS 全般のリファレンス」の「リージョンのエンドポイント」を参照してください。 |
X-Amz-Date |
日付と時刻の形式は ISO 8601 規格に準拠している必要があるため、 |
X-Amz-Expires |
生成された署名付き URL が有効な期間を秒単位で指定します。例えば、86400 (24 時間) と指定します。この値は整数です。設定できる最小値は 1 で、最大値は 604800 (7 日間) です。署名計算に使用する署名キーは最大 7 日間有効であるため、署名付き URL は最大 7 日間有効です。 |
X-Amz-SignedHeaders |
署名の計算に使用したヘッダーを一覧表示します。署名計算には次のヘッダーが必要です。
セキュリティの強化のために、リクエストに含める予定のすべてのリクエストヘッダーに署名する必要があります。 |
X-Amz-Signature |
リクエストを認証するための署名を指定します。この署名は、サービスが計算する署名と一致する必要があります。一致しない場合、サービスはリクエストを拒否します。例えば、 署名計算については、次のセクションで説明します。 |
X-Amz-Security-Token |
STS サービスから取得した認証情報を使用する場合のオプションの認証情報パラメータ。 |