デバイスが MQTT サーバーに接続するのをブロックできますか?
トピックへのサブスクライブからデバイスをブロックできますか?
MQTT サーバーにデバイス登録はありますか。既知のデバイスのみを許可できるようにするには? 何らかの登録メカニズムがある場合、API を使用して動的に行うことはできますか?
HiveMQや mosquitto などの一般的な MQTT ブローカーは、認証と承認を許可します。HiveMQ を使用する場合は、ファイル認証プラグインを使用して、ユーザー名/パスワードを介してブローカーへのアクセスを制限できます。
Java で呼び出すことができる API (HTTP REST API、SOAP Web サービス、データベースなど) のような認証メカニズムが既にある場合、プラグイン システムを使用して HiveMQ にプラグインするのは非常に簡単です。Githubで、データベースと統合するプラグインの例を見ることができます。別のプラグインとして、Stormpath プラグインがあります。ソース コードはGithub でも入手できます。
免責事項: 私は HiveMQ の背後にある会社で働いています。
ブローカーの実装に厳密に関連する機能もあれば、MQTT 仕様に依存する機能もあります。
クライアントがブローカーに接続すると、クライアント ID と (オプションで) ユーザー名とパスワードが提供されます。特定のブローカーの実装に関連して、クライアント ID、ユーザー名、およびパスワードに基づいてデバイスの接続をブロックできるように、認証メカニズムを提供できます。
最後の MQTT 3.1.1 仕様では、SUBBACK メッセージで、サブスクリプションを拒否するためのエラーを設定できます。また、この場合、デバイスのサブスクライブをブロックする方法は、ブローカーの実装によって異なります。
ご覧のとおり、MQTT 仕様は認証メカニズムのいくつかの機能を提供しますが、この機能は、特定のブローカーの実装に基づいて (そして異なる方法で) 利用できるかどうかが異なります。
パオロ。