CloudMonitor は、ハッシュベースメッセージ認証コード (HMAC) と SHA-1 ハッシュ関数を組み合わせた署名アルゴリズムである HMAC-SHA1 のみをサポートします。このトピックでは、HTTP リクエストの署名文字列を作成する方法と、その文字列からリクエスト署名を計算する方法について説明します。
前提条件
Alibaba Cloud のアクセスキーペアが必要です。
HTTP リクエストの署名を生成する場合は、アクセスキー ID と AccessKey Secret で構成されるアクセスキーペアを使用する必要があります。
既存のアクセスキーペアを使用することも、新しいアクセスキーペアを作成することもできます。アクセスキーペアがアクティブな状態であることを確認してください。
ステップ1:署名文字列の生成
HTTP リクエストの署名文字列 (SignString) は、HTTP リクエストのメソッド、ヘッダー、およびボディ情報から生成します。次の順序で各パートを連結します。
SignString = VERB + "\n"
+ CONTENT-MD5 + "\n"
+ CONTENT-TYPE + "\n"
+ DATE + "\n"
+ CanonicalizedHeaders + "\n"
+ CanonicalizedResource上記の式では、\n は改行のエスケープ文字、+ は文字列の連結操作を示します。次の表では、署名文字列を構成するその他のパートについて説明します。
| 名前 | 説明 | 例 |
| VERB | HTTP リクエストのメソッド名。 | PUT、GET、POST |
| CONTENT-MD5 | HTTP リクエストボディの MD5 値。> 注: MD5 値は、大文字の英字と数字で構成される文字列である必要があります。 | 0B9BE351E56C90FED853B32524253E8B |
| CONTENT-TYPE | HTTP リクエストボディのタイプ。 | application/json |
| DATE | HTTP リクエスト内の標準タイムスタンプヘッダー。> 注: タイムスタンプは RFC 1123 形式に従い、グリニッジ標準時 (GMT) を使用する必要があります。 | Mon, 3 Jan 2010 08:33:47 GMT |
| CanonicalizedHeaders | HTTP リクエスト内の x-cms および x-acs で始まるカスタムヘッダーから構成される文字列。 | x-cms-api-version:0.1.0、x-cms-signature |
| CanonicalizedResource | リクエスト対象のリソースを表す文字列。 | /event/custom/upload |
署名文字列の CanonicalizedHeaders および CanonicalizedResource パートは、次のセクションで説明する手順に従って作成します。
CanonicalizedHeaders
CanonicalizedHeaders を作成するには、次の操作を順に実行します。
x-cmsおよびx-acsで始まるすべての HTTP リクエストヘッダー名を小文字に変換します。すべてのカスタム CMS および ACS リクエストヘッダーを辞書順の昇順で並べ替えます。
ヘッダー値の前後に存在するスペースを削除します。
各ヘッダー名と値を「:」で連結した文字列を、さらに改行文字 (
\n) で連結して、最終的な CanonicalizedHeaders を作成します。
CanonicalizedResource
CanonicalizedResource を作成するには、次の操作を順に実行します。
CanonicalizedResource を空の文字列 ("") に設定します。
アクセス先の URI を CanonicalizedResource に追加します。例:
/event/custom/upload。リクエストにクエリ文字列 (
QUERY_STRING) が含まれている場合は、?とクエリ文字列を CanonicalizedResource 文字列の末尾に追加します。QUERY_STRINGは、URI 内のリクエストパラメーターをパラメーター名に基づいて辞書順に並べ替えて構成される文字列です。パラメーターは&で区切られ、各パラメーターは=で名前と値を連結します。式は次のとおりです。
QUERY_STRING = "KEY1=VALUE1" + "&" + "KEY2=VALUE2"ステップ2:署名の生成
次の式を使用して、署名文字列からリクエストの署名 (Signature) を計算します。
Signature=base16(hmac-sha1(UTF8-Encoding-Of(SignString), AccessKeySecret))次の例は、署名の計算を示しています。
SignString="POST" + "\n"
+"0B9BE351E56C90FED853B32524253E8B" + "\n"
+"application/json" + "\n"
+"Tue, 11 Dec 2018 13:05:51 GMT" + "\n"
+"x-cms-api-version:1.0" + "\n"
+"x-cms-ip:127.0.0.1" + "\n"
+"x-cms-signature:hmac-sha1" + "\n"
+"/event/custom/upload"
accesskey="testkey"
accessSecret="testsecret" // 署名キーとして使用される AccessKey Secret。この計算では、次の署名が返されます。
1DC19ED63F755ACDE203614C8A1157EB1097E922