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

ApsaraMQ for MQTT:デバイスごとの個別証明書認証モード

最終更新日:Jun 05, 2026

各デバイスが ApsaraMQ for MQTT に接続するには、一意のデバイスアクセス認証情報 (ClientIdDeviceAccessKeyId、および DeviceAccessKeySecret) が必要です。デバイスはこの認証情報を使用して UsernamePassword を設定し、認証リクエストを ApsaraMQ for MQTT に送信します。ApsaraMQ for MQTT はデバイスを認証してアクティベートし、ApsaraMQ for MQTT とのデータ転送を可能にします。

用語集

用語

説明

デバイスアクセス認証情報

ApsaraMQ for MQTT サーバーがクライアントに発行する、クライアント ID にバインドされたグローバルに一意な認証情報です。これは DeviceAccessKeyIdDeviceAccessKeySecret で構成され、クライアントが ApsaraMQ for MQTT に接続する際に UsernamePassword を設定するために使用されます。

アプリケーションサーバー

ローカルアカウントを管理し、クライアントのデバイスアクセス認証情報リクエストを処理する、お客様のサーバーです。

ApsaraMQ for MQTT サーバー

認証を処理し、アプリケーションサーバーからの認証情報リクエストを処理し、メッセージトラフィックを管理する ApsaraMQ for MQTT サーバーです。

計算方法

認証の概要」で説明されているように、MQTT サーバーに接続する際、connect メッセージにユーザー名とパスワードを設定します:

  • Username

    Username は、パイプ (|) で区切られた 3 つの部分 (認証モード、DeviceAccessKeyId、インスタンス ID) から構成されます。モードを DeviceCredential に設定します。

    例:クライアント ID が GID_Test@@@0001、インスタンス ID が mqtt-xxxxxDeviceAccessKeyIdYYYYY の場合、UsernameDeviceCredential|YYYYY|mqtt-xxxxx となります。

    クライアント ID の形式は、用語集で定義されています。

  • Password

    Password は、DeviceAccessKeySecret をキーとして使用し、クライアント ID を HMAC-SHA1 で署名し、Base64 でエンコードしたものです。

    例:クライアント ID が GID_Test@@@0001 で、DeviceAccessKeySecretXXXXX の場合:

    キー XXXXX を使用して GID_Test@@@0001 を HMAC-SHA1 で署名してバイナリ配列を生成し、それを Base64 でエンコードして Password を取得します。

    ほとんどのプログラミング言語には HMAC-SHA1 ライブラリが含まれています。

認証フロー

次の図に示すように、アプリケーションサーバーをデプロイします。初期化中に、MQTT クライアントはアプリケーションサーバーと対話し、デバイスアクセス認証情報を取得および更新します。

図 1: 認証フローUnique-certificate-per-device authentication flow

プロセスは次のとおりです。

  1. お客様のアプリケーションサーバーが OpenAPI を呼び出し、クライアントのために MQTT サーバーからデバイスアクセス認証情報を事前にリクエストします。

  2. MQTT サーバーはリクエストを検証します。リクエストが有効な場合、サーバーはデバイスアクセス認証情報を発行します。

  3. アプリケーションサーバーは認証情報をローカルにキャッシュし、クライアントにマッピングします。キャッシュの利点:

    • クライアント側で認証情報の漏洩などの問題がない限り、キャッシュされた認証情報を直接返すことができ、追加の API 呼び出しを回避できます。

    • クライアントが再度デバイスアクセス認証情報をリクエストし、MQTT サーバーが利用できない場合、アプリケーションサーバーはディザスタリカバリのためにキャッシュされた認証情報を返すことができます。

  4. お客様のアプリケーションサーバーが MQTT クライアントに認証情報を送信します。

  5. MQTT クライアントは認証情報を使用して接続パラメーターを設定し、MQTT サーバーに接続します。検証が成功すると、クライアントはメッセージを送受信できます。

使用制限

インスタンス仕様の制約

  • 認証情報クォータは、インスタンス仕様の接続数上限と等しくなります。クォータに達した場合は、インスタンスをアップグレードして容量を増やします。詳細については、「インスタンスの更新、アップグレード、またはダウングレード」をご参照ください。

  • UnRegisterDeviceCredential API を呼び出して、未使用のデバイスの認証情報を登録解除し、クォータを解放してください。

クライアントの動作に関する制約

  • 接続ごとに、デバイスアクセス認証情報を使用して UsernamePassword を設定してください。

  • アプリケーションサーバーから取得した認証情報を永続ストレージに保存して、繰り返しのリクエストを避け、大量の再接続時におけるアプリケーションサーバーの負荷を軽減してください。

アプリケーションサーバーの動作に関する制約

  • 重複リクエストを防ぐために、認証情報とクライアント間のマッピングを管理してください。

  • MQTT サーバーが一時的に利用できない場合でもサービスを維持するために、ローカルでのディザスタリカバリを実装してください。

関連 API オペレーション

お客様のアプリケーションサーバーは、HTTPS 経由で ApsaraMQ for MQTT の OpenAPI を呼び出すことによって、デバイスアクセス認証情報を管理します。

各オペレーションには、アイデンティティ検証のための AccessKey とリクエスト署名が必要です。認証情報の登録、クエリ、登録解除、更新が可能です。詳細については、「デバイスごとの個別証明書認証のためのアプリケーションサーバー API オペレーション」をご参照ください。