セキュリティを確保するために、すべてのHTTPまたはHTTPS APIリクエストに署名する必要があります。 Alibaba Cloudは、リクエスト署名を使用して、リクエスト送信者のIDを検証します。 Alibaba Cloudドメインは、AccessKeyペアによる対称暗号化を実装して、リクエスト送信者のIDを検証します。 AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。
ステップ1: 正規化されたクエリ文字列を作成する
- リクエストパラメーター (共通リクエストパラメーターおよび
Signatureを除く操作固有のパラメーターを含む) をアルファベット順に並べます。注 たとえば、GET メソッドを使用してリクエストする場合、これらのパラメーターは URL の末尾に疑問符?を付け、アンパサンド&で連結します。 - エンコードされたパラメーターとパラメーター値を等号 (
=) で連結します。 - Use an ampersand (
&) to connect the encoded request parameters. これらのパラメーターは、手順1と同じ順序でソートする必要があります。
次に、リクエスト構造に続く正規化されたクエリ文字列 (CanonicalizedQueryString) を取得します。 詳細については、「リクエスト構造」をご参照ください。
Step 2: Create文字列に署名符号化からcanonicalizedクエリ文字列
- 正規化された文字列を使用して、変数
StringToSignを作成します。 前述のpercentEncodeを使用して、前の手順で作成された標準化リクエスト文字列を次のルールで処理できます。StringToSign= HTTPMethod + "&" + //HTTPMethod: HTTP method used for making request, for example GET. percentEncode("/") + "&" + //percentEncode("/"): Encode backslash (/) to %2F. percentEncode(CanonicalizedQueryString) //Encode the canonicalized query string created in the Step 1. StringToSignの HMAC-SHA1 値 (RFC2104 の規則に準拠) を計算して、変数 Signature を作成します。 ここでは、Java のエンコーディングメソッド Base64 を使用します。Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) )注 RFC2104 に準拠する署名を計算する場合、AccessKeySecretの後ろにアンパサンド (&) が続きます。アンパサンドの16 進 ASCII 値は 38 です。- RFC3986 の規則に従って
Signatureの値を、正規化されたクエリ文字列 URL にエンコードします。
例1: パラメータの連結
例として、DescribeRegions を呼び出します。 既にコンソールで AccessKeyID = testid と AccessKeySecret = testsecret は作成されています。
- StringToSignを作成します。
GET&%2F&AccessKeyId%3Dtestid%26Action%3DDescribeRegions%26Format%3DXML%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf%26SignatureVersion%3D1.0%26Timestamp%3D2016-02-23T12%253A46%253A24Z%26Version%3D2014-05-26 - HMAC-SHA1 値を計算します。 既に AccessKeySecret = testsecret が作成されているので、RFC2104 の規則で使用するキーは
testsecret&で、HMAC-SHA1 値はOLeaidS1JvxuMvnyHOwuJ+uX5qY=です。 ここでは、Java のエンコーディングメソッド Base64 を使用します。Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) ) - RFC 3986を使用してエンコードされた
Signature=OLeaidS1JvxuMvnyHOwuJ % 2BuX5qY % 3D文字列を、手順1のURLに追加します。http://ecs.aliyuncs.com/?SignatureVersion=1.0&Action=DescribeRegions&Format=XML&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf&Version=2014-05-26&AccessKeyId=testid&Signature=OLeaidS1JvxuMvnyHOwuJ%2BuX5qY%3D&SignatureMethod=HMAC-SHA1&Timestamp=2016-02-23T12%253A46%253A24Z