Mosquitto: MQTT API認証の仕組み

このドキュメントはAPI認証ガイドの一部です。完全なガイドはこちらからご覧いただけます:外部APIを使用して数千のデバイスを認証する方法

👋 Stackhero ドキュメントへようこそ!

Stackhero では、信頼性と柔軟性を重視したフルマネージドの Mosquitto MQTT クラウド 環境をご提供しています:

  • 無制限のメッセージスループットとデータ転送により、ワークフローが人工的な制限に達することはありません。
  • 独自の外部 API を利用した 無制限のデバイス認証で、オンボーディングやアクセス管理もシームレスに行えます。
  • トピック、ユーザー、アクションごとに細かく制御できる 高度な ACL
  • HTTPS 対応の カスタムドメイン名で、セキュアかつブランド化されたエンドポイントを提供します(例:https://mqtt.your-company.com)。
  • ワンクリックで適用できるアップデートにより、改善やセキュリティパッチも手間なく実施可能です。
  • すべてのインスタンスが プライベートかつ専用インフラ上で稼働し、安定した パフォーマンスと強固な セキュリティを実現します。

IoT プロジェクトを加速し、運用負荷を大幅に削減しましょう。セキュアで本番運用に対応した Mosquitto MQTT クラウドホスティング インスタンスを、わずか数分で立ち上げることができます。

外部API認証の使用は、20台以上のIoTデバイスを持つ場合や、詳細なトピックACL管理が必要な場合に特に有用です。

デバイスがMQTTに接続すると、MosquittoはHTTP POSTリクエストをAPIに送信します。このリクエストには、デバイスのユーザー名とパスワードを含むJSONペイロードが含まれています。APIがHTTPステータスコード200を返すと、デバイスは認証されます。200以外のステータスコード(例えば401)は、デバイスのアクセス拒否を意味します。

ACLの検証中に、4つのパラメータが送信されます:usernameclientidtopic、およびacc。APIは、usernametopicaccによって定義された操作を実行することが許可されているかを確認する必要があります。accパラメータは次のように定義されます:

  1. 読み取りアクセス (1)
  2. 書き込みアクセス (2)
  3. 読み取りおよび書き込みアクセス (3)
  4. 購読アクセス (4)

例えば、ユーザーuserAがトピックsensors/temperaturesを購読しようとする場合、APIは次のJSONを受け取ります:

{
  "username": "userA",
  "clientid": "userA",
  "topic": "sensors/temperatures",
  "acc": 4
}

APIを介したユーザー認証を使用する場合でも、Stackheroダッシュボードでユーザーを手動で定義することができます。 この場合、手動で定義されたユーザーが優先されます。