Archives2019-01-21MQTTを使いたい。今回はちょっとでもセキュアに使っていくために、認証を取り入れてみます。今回は以下の構成で動かすことを考えます。受信可能なSubscriberサンプルコード認証機能付きのBrokermqttサーバー処理outh_mqtt_bro.jsと、認証処理outh_param.jsに分離しました。callback)の3件を追加することで、認証処理を追加します。client));これらと異なり、接続前・メッセージの発行前・メッセージの受信要求前に処理される。特定トピックA,Bのみ送信可能なPublisherouth_param.jsへの記載を参照し、clientId、username、passwordの3つのパラメータを設定する。1000)})特定トピックAのみ受信可能なSubscriberこちらも同様にouth_param.jsへの記載を参照し、clientId、username、passwordを、subcliantAの組み合わせで設定する。console.log(`${topic}=>${message.toString()}`)})特定トピックBのみ受信可能なSubscriberやはり同様にouth_param.jsへの記載を参照し、clientId、username、passwordの3つのパラメータを設定する。こちらはsubcliantBにする。console.log(`${topic}=>${message.toString()}`)})これらを動かすと以下のようになる。左から、outh_mqtt_bro.js,mqtt_pub.js,mqtt_subA.js,mqtt_subB.jsの実行画面mqtt_subA.js,mqtt_subB.jsいづれもtopicA,topicBの購読を宣言しているのに、それぞれ、outh_param.jsで設定したtopicのみ購読できていることがわかります。今までみたいなmqttのbrokerに対して、どんなtopicでも、どんなクライアントでも接続できることは決していいことばかりではないと思います。今回のような制御でそれらが緩和されるといいなと思います。今回は拡張性が低い(10クライアント繋ぐなら10クライアントの設定の記述が個別に必要)設定なので、クライアント名にワイルドカードを使用可能にするなど、もう少し、考えてみたいところです。次回は、m5stackとmqttをやり取りしたいと思います。