mercoledì 26 settembre 2018

ActiveMQ: Come creare un broker MQTT con Username e Password su Windows

Con questo articolo vi illustrerò quali sono i passi necessari per installare un broker MQTT.
Innanzitutto facciamo alcuni cenni sull'MQTT: Message Queue Telemetry Transport è un protocollo ampiamente utilizzato nell'ambito delle comunicazioni e ormai anche nel campo della domotica e dell'IoT per lo scambio di messaggi tra dispositivi.
In particolare l'MQTT si basa sul paradigma Publish/Subscribe dove abbiamo dei dispositivi che pubblicano su un Topic e dei sottoscrittori che sottoscrivono dei Topic. Molto spesso mi capita di paragonare questo paradigma alle chat di Whatsapp dove un topic potrebbe essere un gruppo, ed io posso decidere di pubblicare qualcosa su questo gruppo (publisher) oppure semplicemente di leggere quello che scrivono gli altri (Subscriber).
Per mettere in piedi questo protocollo abbiamo bisogno di un broker che si occuperà di gestire topic, pubblicazioni e sottoscrizioni. Il broker di cui vi parlerò è uno dei più utilizzati in ambito professionale, ovvero ActiveMQ.
ActiveMQ oltre che un semplice broker MQTT è in grado di gestire molti altri protocolli di messaggistica (AMQP, OpenWire), ma in questa guida punteremo alla realizzazione di un broker MQTT. La presente guida è rivolta a sistemi operativi Windows e un requisito necessario è la presenza di Java precedentemente installato.
Possiamo scaricare l'ultima versione di ActiveMQ dal seguente link
Una volta scaricato scompattiamo l'archivio, all'interno della cartella bin troviamo due cartelle Win64 e Win32 ed in funzione del tipo di Windows che stiamo utilizzando (32bit, 64bit) apriamo la cartella  corrispondente e cliccando su activemq.bat partirà il nostro server ActiveMQ.
Cliccando su InstallService.bat così come dice la parola verrà installato un servizio che lancerà il nostro server senza avere nessuna finestra di console aperta e inoltre possiamo impostare che il servizio parta all'avvio del pc.
L'mqtt di default utilizza due porte, la 1883 e la 8883 (quest'ultima viene utilizzata per le connessioni sicure abbinate all'utilizzo di certificati), a tal proposito per la connessione al broker da un altro dispositivo bisognerà aprire la porta sul firewall del nostro pc.
Dallo stesso pc sul quale è stato avviato il server mqtt inoltre, aprendo il browser e puntando alla pagina http://localhost:8161/admin e utilizzando admin/admin come username/password sarà possibile accedere alla console web di ActiveMQ dalla quale potremo visionare i client connessi, i topic utilizzati e i connettori attualmente in funzione.

Al primo avvio i client potranno connettersi al broker senza autenticazione, tuttavia se vogliamo impostare username e password per l'accesso al broker MQTT i passi sono molto semplici. Dobbiamo mettere le mani nel file di configurazione che si trova all'interno della cartella conf e si chiama per l'appunto activemq.xml. Si tratta di un file xml e per impostare username e password utilizzeremo un plugin già presente tra quelli scaricati. Il plugin che andiamo ad utilizzare è il SimpleAuthenticationPlugin e per impostarlo e metterlo in funzione andiamo a scrivere nel file di configurazione precedentemente indicato, subito sopra il tag di chiusura broker le seguenti righe:
...
<plugins>
<simpleAuthenticationPlugin> 
<users> 
<authenticationUser username="user" password="password" groups="users"/> 
</users> 
</simpleAuthenticationPlugin>
</plugins>

</broker>
Da questo momento per potersi connetter al broker bisognerà utilizzare come username user e come password password ovvero i termini indicati nel codice appena sopra che possono essere modificati a nostro piacimento.
Con questo terminiamo questo tutorial e concludo indicandovi un buon client MQTT installabile sul vostro pc Windows per testare la connessione, il nome è MQTT Fx e lo trovate al seguente link.