認証情報を提供するためにHTTP Authorizationヘッダーを使用することに加えて、リクエスト全体をURLで表現する場合に、クエリ文字列パラメーターを使用してリクエストを認証できます。 これにより、アクセス資格情報を公開することなく、指定されたObject Storage Service (OSS) リソースに対する一時的なアクセス権限をユーザーに付与できます。 このトピックでは、URLにV4署名を含める方法について説明します。
OSS SDKを使用したV4シグネチャの自動実装
OSS SDKはV4シグネチャの自動実装をサポートしています。 OSS SDKを使用してリクエストを開始することを推奨します。 これにより、署名を手動で計算する必要がなくなります。 異なるプログラミング言語でOSS SDKを使用する場合にV4署名アルゴリズムを使用してリクエストに署名する方法の詳細については、OSS SDKのサンプルコードをご参照ください。 次の表に、さまざまなプログラミング言語のOSS SDKを使用して開始されたリクエストに署名するために使用されるサンプルコードへの参照を示します。
SDK | 例 | サンプルコード |
Java | ||
PHP | ||
Node.js | ||
Browser.js | ||
Python | ||
Go | ||
C++ | ||
C |
URL署名
例:
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampleobject?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-credential=<AccessKeyId>/20231203/cn-hangzhou/oss/aliyun_v4_request&x-oss-date=20231203T1212Z&x-oss-expires=86400&x-oss-additional-headers=host&x-oss-signature=<signature-to-be-calculated>
読みやすくするために、上記のURLの
x-oss-credential
パラメーターのフィールドはスラッシュ (/) で区切ります。 リクエストを開始すると、URLのスラッシュ(/)
をURIエンコードして% 2F
に変換します。 例:&x-oss-credential=<AccessKeyId>% 2F20231203% 2Fcn-hangzhou % 2Foss % 2Faliyun_v4_request
クエリ文字列パラメーター
パラメーター
データ型
必須
例
説明
x-oss-signature-version
String
必須
OSS4-HMAC-SHA256
署名のバージョンとアルゴリズム。 値をOSS4-HMAC-SHA256に設定します。
x-oss-credential
String
必須
LTAI ********************/20231203/cn-hangzhou/oss/aliyun_v4_request
署名の計算に使用できる資格情報。 形式:
<AccessKeyId>/<date>/<region>/oss/aliyun_v4_request
AccessKeyId: AccessKeyペアのAccessKey ID。
date: リクエストが開始された日付。
region: 要求されたリソースが存在するリージョン。
oss: 要求されたサービスの名前。 有効値: oss。
aliyun_v4_request: リクエスト内の署名バージョンの説明。 有効値: aliyun_v4_request
x-oss-date
String
必須
20231203T1212Z
URLが署名された時刻。 時間はISO 8601標準に従います。 時間差を避けるために、URLが署名されてから15分のオフセットが許可されています。
説明時間は、文字列が署名するためのタイムスタンプとして使用されます。 値は、派生署名キーの日付フィールドの値と同じでなければなりません。
x-oss-expires
Integer
可
3600
署名付きURLの有効期間。 単位は秒です。 最小値:1 最大値: 604800。
x-oss-additional-headers
String
任意
host
署名を計算するために追加するヘッダー。 リクエストに含めるすべてのリクエストヘッダーに署名することをお勧めします。
パラメータを作成するための要件を次に示します。
x-oss-additional-headersパラメーターのヘッダーはすべて小文字である必要があります。
x-oss-additional-headersパラメーターのすべてのヘッダーは、アルファベット順にソートする必要があります。
配列内のすべてのヘッダーは、文字列を取得するためにセミコロン (;) で区切られます。
x-oss-signature
String
必須
77Dv ***************
署名検証の説明。 x-oss-signatureパラメーターは署名の計算には含まれません。
x-oss-security-token
String
任意
CAIS ********************************
security token Service (STS) によって発行されたセキュリティトークン。 このパラメーターは、STSユーザーを使用してURLの署名を作成する場合にのみ必要です。
署名計算プロセス
URLの署名を計算するために使用される方法は、Authorizationヘッダーの署名を計算するために使用される方法と同様である。 次の項目は、2つの方法の違いを説明します。
ペイロードハッシュを記述する
x-oss-content-sha256
ヘッダーは、URLの署名の計算には使用されません。 署名付きURLを作成する場合、ペイロードの内容を評価することはできません。 代わりに、UNSIGNED-PAYLOADが使用されます。署名を計算するために追加するヘッダーには、Content-TypeとContent-MD5は含まれません。
署名付きURLのクエリ文字列パラメーターのキーが署名されるヘッダーと同じで、値が異なる場合、エラーが報告されます。 キーに複数の値がある場合、キーのすべての値が同時に比較されます。 値に矛盾がある場合は、エラーが報告されます。
STSから取得したアクセス資格情報を使用して署名付きURLのOSSリソースにアクセスする場合は、x-oss-security-tokenパラメーターをURLのクエリ文字列に追加する必要があります。
クエリ文字列のx-oss-signatureパラメーターは署名計算に含まれません。
ステップ1: 正規リクエストを作成する
ステップ2: 署名する文字列の作成
ステップ3: 署名を計算する
署名の計算例
この例では、署名付きURLが作成されます。 署名付きURLをサードパーティのユーザーと共有して、OSSにデータをアップロードできます。 次のセクションでは、URLにV4署名を含める方法を示します。
パラメーター
パラメーター
例
AccessKeyId
accesskeyid
AccessKeySecret
accesskeysecret
Timestamp
20231203T1212Z
バケット
examplebucket
オブジェクト
exampleobject
Region
cn-hangzhou
PutObject
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampleobject?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-credential=accesskeyid/20231203/cn-hangzhou/oss/aliyun_v4_request&x-oss-date=20231203T121212Z&x-oss-expires=86400&x-oss-additional-headers=host&x-oss-signature= <計算対象の署名> ホスト: examplebucket.oss-cn-hangzhou.aliyuncs.com x-oss-meta-author: alice x-oss-meta-magic: abracadabra
URLにV4署名を含めるには、次の手順を実行します。
正規のリクエストを作成します。
PUT /examplebucket/exampleobject x-oss-additional-headers=host&x-oss-credentials=accesskeyid % 2Fcn-hangzhou % 2Foss % 2Faliyun_v4_request&x-oss-date=20231203T1212Z&x-oss-expires=86400&x-oss-signature-version=OSS4-HMAC-SHA256 hos t:examplebucket.oss-cn-hangzhou.aliyuncs.com x-oss-meta-author:alice x-oss-meta-magic:abracadabra ホスト 未承認-ペイロード
署名する文字列を作成します。
OSS4-HMAC-SHA256 20231203T1212Z 20231203/cn-hangzhou/oss/aliyun_v4_request 672d815902f04dd8aa90a558931f471cc7269d08a122a5e9028022d9f72333 2c
署名を計算します。
署名キーを計算します。
説明読みやすくするために、署名キーのBase64-encoded値を次の例に示します。
WVjaYR8lCj9YC5PUS2RSZQANYbuh9DhMFxjU1NtZKfc=
署名を計算します。
2c6c9f10d8950fb150290ef6f42570e33cd45d6a57ec7887de75fa2ec45b4c7 2
URLに署名を追加します。
https://examplebucket.oss-cn-hangzhou.aliyuncs.com?x-oss-additional-headers=host&x-oss-credential=accesskeyid % 2Fcn-hangzhou % 2Foss % 2Faliyun_v4_request&x-oss-date=20231203T1212Z&x-oss-expires=86400&x-oss-signature=バージョンOSS4-HMAC-SHA256 ホスト: examplebucket.oss-cn-hangzhou.aliyuncs.com x-oss-meta-author: alice x-oss-meta-magic: abracadabra