このトピックでは、コンテンツモデレーション API を呼び出すために使用できる署名方式について説明します。
説明 コンテンツモデレーション SDK を直接使用することをお勧めします。署名プロセスは SDK にカプセル化されているため、署名のコードを記述する必要はありません。 SDK の詳細については、Java 用コンテンツモデレーション SDK、Python 用コンテンツモデレーション SDK、PHP 用コンテンツモデレーション SDK、Go 用コンテンツモデレーション SDK、および .NET 用コンテンツモデレーション SDK をご参照ください。
HMAC-SHA1 アルゴリズムを使用した手順 (デフォルト)
- リクエストヘッダーをシリアル化します。
x-acs-で始まるすべてのリクエストヘッダーを連結して、次のルールに基づいて文字列を作成します。-
x-acs-で始まるすべての HTTP ヘッダーを抽出します。 - 抽出された HTTP ヘッダーをアルファベット順にソートします。
- 各 HTTP ヘッダーを
"HTTP ヘッダー名" + ":" + "HTTP ヘッダー値" + "\n"の形式で記述します。
-
- URI とクエリパラメータをシリアル化します。 URI と
clientInfoパラメータをuri + "?clientInfo =" + "ClientInfo の JSON 文字列"形式で連結します。説明 この手順では、URL エンコードは不要です。 - 署名対象の文字列を作成します。 次の構文を使用します。
"POST\napplication/json\n" + "Content-MD5 ヘッダーの値" + "\n" + "application/json" + "\n" + "Date ヘッダーの値" + "\n" + "シリアル化されたリクエストヘッダー" + "\n" "シリアル化された URI とクエリパラメータ"次の例は、画像モデレーションの同期操作を呼び出すために使用できる完全な署名対象の文字列を示しています。POST application/json C+5Y0crpO4sYgC2DNjycug== application/json Tue, 14 Mar 2017 06:29:50 GMT x-acs-signature-method:HMAC-SHA1 x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202 x-acs-signature-version:1.0 x-acs-version:2018-05-09 /green/image/scan?clientInfo={"ip":"127.xxx.xxx.2","userId":"12023xxxx","userNick":"Mike","userType":"others"} - 署名文字列を生成します。
- HMAC-SHA1 アルゴリズムを使用して、手順 3 で作成された署名対象の文字列の HMAC 値を計算します。 AccessKey シークレットは、HMAC 計算のキーとして使用されます。 HMAC 値はバイト配列です。 説明 この手順では、HMAC 値に対して他の操作を実行しないでください。
- HMAC 値を Base64 でエンコードして、署名文字列を取得します。
-
署名Authorizationヘッダーで"acs" + " " + AccessKeyId + ":" + signatureの値を取得した署名文字列に設定します。 Authorization ヘッダーの値は、 の構文に従います。説明 上記の構文では、acsとAccessKeyIdの間にスペースが追加されています。
- HMAC-SHA1 アルゴリズムを使用して、手順 3 で作成された署名対象の文字列の HMAC 値を計算します。 AccessKey シークレットは、HMAC 計算のキーとして使用されます。 HMAC 値はバイト配列です。
HMAC-SM3 アルゴリズムを使用した手順
- リクエストヘッダーをシリアル化します。
x-acs-で始まるすべてのリクエストヘッダーを連結して、次のルールに基づいて文字列を作成します。-
x-acs-で始まるすべての HTTP ヘッダーを抽出します。 - 抽出された HTTP ヘッダーをアルファベット順にソートします。
- 各 HTTP ヘッダーを
"HTTP ヘッダー名" + ":" + "HTTP ヘッダー値" + "\n"の形式で記述します。
-
- URI とクエリパラメータをシリアル化します。 URI と
clientInfoパラメータをuri + "?clientInfo =" + "ClientInfo の JSON 文字列"形式で連結します。説明 この手順では、URL エンコードは不要です。 - 署名対象の文字列を作成します。 次の構文を使用します。
"POST" + "\n" + "application/json" + "\n" + "Date ヘッダーの値" + "\n" + "シリアル化されたリクエストヘッダー" + "\n" "シリアル化された URI とクエリパラメータ"次の例は、画像モデレーションの同期操作を呼び出すために使用できる完全な署名対象の文字列を示しています。POST application/json application/json Wed,29Mar202301:44:08GMT x-acs-content-sm3:690c6c542ac53eaa1e2ad724f34d60e689d11db88a2d89469be1fdb2f20fc35c x-acs-signature-method:HMAC-SM3 x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202 x-acs-signature-version:1.0 x-acs-version:2018-05-09 /green/image/scan?clientInfo={"ip":"127.xxx.xxx.2","userId":"12023xxxx","userNick":"Mike","userType":"others"} - 署名文字列を生成します。
- HMAC-SM3 アルゴリズムを使用して、手順 3 で作成された署名対象の文字列の HMAC 値を計算します。 AccessKey シークレットは、HMAC 計算のキーとして使用されます。 HMAC 値はバイト配列です。 説明 この手順では、HMAC 値に対して他の操作を実行しないでください。
- HMAC 値を Base64 でエンコードして、署名文字列を取得します。
-
署名Authorizationヘッダーで"acs" + " " + AccessKeyId + ":" + signatureの値を取得した署名文字列に設定します。 Authorization ヘッダーの値は、 の構文に従います。説明 上記の構文では、acsとAccessKeyIdの間にスペースが追加されています。
- HMAC-SM3 アルゴリズムを使用して、手順 3 で作成された署名対象の文字列の HMAC 値を計算します。 AccessKey シークレットは、HMAC 計算のキーとして使用されます。 HMAC 値はバイト配列です。