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

ApsaraMQ for RocketMQ:リクエストの署名

最終更新日:Jul 09, 2024

Apache RocketMQのメッセージキューは、各HTTPアクセス要求を検証します。 Message Queue for Apache RocketMQに送信される各HTTPリクエストには、リクエストヘッダーにAuthorizationパラメーターが含まれ、Authorizationパラメーターには署名が含まれます。 このトピックでは、署名を生成する方法について説明します。

背景情報

Apsara Stackは、AccessKey IDとAccessKeyシークレットで構成されるAccessKeyペアを各ユーザーに発行します。 ユーザーは、Apsara Uni-manager管理コンソールでAccessKeyペアを申請および管理できます。

  • Access Key ID はユーザーの ID の確認に使用されます。

  • AccessKey Secret は、署名文字列の暗号化と認証に使用されます。 AccessKey Secret は、機密情報として厳密に取り扱う必要があります。

詳細については、「AccessKey の作成」をご参照ください。

Message Queue for Apache RocketMQが提供するHTTPサービスは、AccessKeyペアを使用して対称暗号化を実行し、リクエスト送信者のIDを検証します。 計算された検証コードがリクエストで提供されたものと同じである場合、HTTPサービスはリクエストが有効であると判断します。 それ以外の場合、HTTPサービスは要求を拒否し、HTTP 403を返します。

リクエストの署名を提供するには、各HTTPリクエストのヘッダーにAuthorizationパラメーターを追加する必要があります。 このようにして、HTTPサービスは要求の有効性を判断できます。

リクエストに署名する方法

Authorizationパラメーターは、次の形式で指定します。

MQ <AccessKey ID >:< 署名>

次のコードは、署名の生成に使用されるパラメーターを示しています。

Signature = base64(hmac-sha1(HTTP_METHOD + "\n"
                + "\n"+ CONTENT-TYPE + "\n"
                + DATE + "\n"
                + "x-mq-version:" + MQVersion + "\n"
                + CanonicalizedResource))       
  • HTTP_METHOD: PUT、GET、POST、DELETEなどのHTTPメソッドを大文字で指定します。

  • CONTENT-TYPE: リクエストボディのタイプを指定します。 値をtext/xml; charset=utf-8に設定します。

  • 日付: 操作を実行する時刻を指定します。 このパラメーターは空のままにすることはできず、UTCで指定する必要があります。 たとえば、このパラメーターをThu, 07 Mar 2012 18:49:58 GMTに設定できます。

  • MQVersion: Apache RocketMQ APIのMessage Queueのバージョンを指定します。 値を2015-06-06に設定します。

  • CanonicalizedResource: HTTPリクエストでリクエストされたリソースのURI (Uniform Resource Identifier) を指定します。 たとえば、消費リクエストのURIを /topics/abc/messages?consumer=GID_abcに設定します。

説明
  • string-to-signはUTF-8形式である必要があります。

  • RFC 2104で定義されているHMAC-SHA1方法を使用して署名を計算します。 この方法では、AccessKey secretが暗号化キーとして使用されます。