すべてのプロダクト
Search
ドキュメントセンター

:署名メカニズム

最終更新日:Mar 22, 2020

Access Key ID と Access Key Secret は、Alibaba Cloud からユーザーに対して公式に発行されます。ユーザーは Alibaba Cloud の公式 Web サイトで申請、管理することができます。

Access Key ID はユーザーの身分を識別します。

Access Key Secret はユーザーの署名文字列の暗号化に使用する秘密鍵であり、サーバーで署名文字列を検証する際にも用いられます。機密として厳密に取り扱い、Alibaba Cloud と当該ユーザー以外に知られてはならない情報です。

MNS はすべてのリクエストを認証します。そのため、MNS に送信するリクエストすべてに署名情報を含める必要があります。MNS は、Access Key ID と Access Key Secret を使用して、対称暗号化方式によるリクエスト送信者の認証を実行します。計算結果が提供された結果と同じであった場合、リクエストは有効と見なされます。それ以外の場合、MNS はリクエストを拒否し、HTTP 403 エラーコードを返します。

HTTP リクエストに権限付与ヘッダーを追加して、署名情報を含めることができます。これにより、そのメッセージが権限付与済みであることが示されます。また MNS では、署名が HTTP ヘッダーに含まれている必要があります。具体的には、次のとおりです。Authorization: MNS スペース Access Key ID: 署名

署名の計算方法は次のとおりです。

  1. Signature = base64(hmac-sha1(VERB + "\n"
  2. + CONTENT-MD5 + "\n"
  3. + CONTENT-TYPE + "\n"
  4. + DATE + "\n"
  5. + CanonicalizedMNSHeaders
  6. + CanonicalizedResource))
  • VERB は HTTP メソッドを示します (PUT など)。
  • Content-Md5 は、リクエストコンテンツの MD5 の値を示します (「その他の問題」の 3 を参照してください)。
  • CONTENT-TYPE は、リクエストのコンテンツタイプを示します (「その他の問題」の 3 を参照してください)。
  • DATE は操作日時を示します。空白のままにはできません (GMT 形式のみサポートされています)。リクエストの時刻と MNS サーバー時刻との差が 15 分を超えている場合、MNS はリクエストを無効と見なし、HTTP エラーコード 400 を返します。関連するエラー情報とエラーコードについては、このドキュメントのパート 5 を参照してください。(例: ‘Thu, 17 Mar 2012 18:49:58 GMT’)
  • CanonicalizedMNSHeaders は HTTP リクエスト内の “x-mns-“ で始まるフィールドの組み合わせを示します (詳細については「注意」を参照してください)。
  • CanonicalizedResource は HTTP でリクエストするリソースの URI (uniform resource identifier) を示します。(例: ‘/queues/$queueName?metaOverride=true’)

注意:

CanonicalizedMNSHeaders (“x-mns-“ で始まるヘッダー) は、認証前に次のルールに準拠している必要があります。

  • ヘッダー名が小文字であること。
  • ヘッダーが昇順で並べ替えられていること。
  • ヘッダーの名前と値を区切るコロンの前後にスペースがないこと。
  • 各ヘッダーの後に “\n” がある。”x-mns-“ で始まるヘッダーがない場合、CanonicalizedMNSHeaders は署名内で null に設定されます。

その他の問題:

  • 署名に使用する文字列は UTF-8 形式です。
  • 署名方法には、RFC 2104 で定義されている HMAC-SHA1 方式が採用されています。Key は AccessKeySecret を示します。
  • リクエストの content-type と content-md5 は省略可能です。署名が必要な場合は null 値を “\n” に置き換えます。

リクエストの例は次のとおりです。

  1. PUT /queues/$queueName?metaOverride=true HTTP/1.1
  2. Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
  3. Date: Wed, 08 Mar 2012 12:00:00 GMT
  4. Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
  5. <?xml version="1.0" encoding="UTF-8" ?>
  6. <Queue xmlns="http://mns.aliyuncs.com/doc/v1/">
  7. <VisibilityTimeout >60</VisibilityTimeout>
  8. <MaximumMessageSize>1024</MaximumMessageSize>
  9. <MessageRetentionPeriod>120</MessageRetentionPeriod>
  10. <DelaySeconds>30</DelaySeconds>
  11. </Queue>

入力した AccessKey ID が存在しない場合や、アクセスキーがアクティブでない場合は、HTTP エラーコード 403 (Forbidden) が返されます。

応答の例:

  1. Content-Type: text/xml
  2. Content-Length: 314
  3. Date: Wed, 18Mar 2012 08:04:06 GMT
  4. x-mns-request-id: 512B2A634403E52B1956133E
  5. <?xml version="1.0" encoding="utf-8"?>
  6. <Error xmlns="http://mns.aliyuncs.com/doc/v1/">
  7. <Code>AccessIDAuthError</Code>
  8. <Message>
  9. AccessID authentication fail, please check your AccessID and retry.
  10. </Message>
  11. <RequestId>512B2A634403E52B1956133E</RequestId>
  12. <HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
  13. </Error>

Date がヘッダーに含まれていない場合や、形式が正しくない場合は、HTTP エラーコード 403 (Forbidden) が返されます。

応答の例:

  1. Content-Type: text/xml
  2. Content-Length: 274
  3. Date: Wed, 18Mar 2012 08:04:06 GMT
  4. x-mns-request-id: 512B2A634403E52B1956133E
  5. <?xml version="1.0" encoding="UTF-8" ?>
  6. <Error xmlns="http://mns.aliyuncs.com/doc/v1/">
  7. <Code>InvalidArgument</Code>
  8. <Message>Date header is invalid or missing.</Message>
  9. <RequestId>7E1A5CF258F535884403E533</RequestId>
  10. <HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
  11. </Error>

リクエスト時刻は MNS サーバーの現在時刻から 15 分以内である必要があります。それ以外の場合、HTTP エラーコード 408 (Timeout) が返されます。

戻り値の例:

  1. Content-Type: text/xml
  2. Content-Length: 283
  3. Date: Wed, 11 May 2011 09:01:51 GMT
  4. x-mns-request-id: 512B2A634403E52B1956133E
  5. <?xml version="1.0" encoding="UTF-8" ?>
  6. <Error xmlns="http://mns.aliyuncs.com/doc/v1/">
  7. <Code> TimeExpired</Code>
  8. <Message>
  9. The http request you sent is expired.
  10. </Message>
  11. <RequestId>512B2A634403E52B1956133E</RequestId>
  12. <HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
  13. </Error>