Mosquitto: Come funziona l'autenticazione API MQTT

Questa documentazione fa parte della guida Autenticazione API. Consulta la guida completa qui: Come autenticare migliaia di dispositivi utilizzando un'API esterna.

👋 Benvenuto nella documentazione di Stackhero!

Stackhero offre un ambiente Mosquitto MQTT cloud completamente gestito, progettato per garantire affidabilità e flessibilità:

  • Throughput illimitato per i messaggi e trasferimenti di dati, così i tuoi workflow non incontreranno mai limiti artificiali.
  • Autenticazione illimitata dei dispositivi tramite la tua API esterna, per un onboarding e una gestione degli accessi senza interruzioni.
  • ACL avanzate per un controllo dettagliato su topic, utenti e azioni.
  • Un nome di dominio personalizzato con HTTPS integrato per endpoint sicuri e brandizzati (ad esempio: https://mqtt.tua-azienda.com).
  • Aggiornamenti senza complicazioni: applica miglioramenti o patch di sicurezza con un solo clic.
  • Performance costante e sicurezza elevata, con ogni istanza eseguita su un'infrastruttura privata e dedicata.

Accelera i tuoi progetti IoT e riduci il carico operativo. Puoi avere un'istanza Mosquitto MQTT cloud hosting sicura e pronta per la produzione in pochi minuti.

L'uso dell'autenticazione API esterna è particolarmente utile quando si hanno più di 20 dispositivi IoT o quando è necessaria una gestione dettagliata delle ACL degli argomenti.

Quando un dispositivo si connette a MQTT, Mosquitto invia una richiesta HTTP POST alla tua API. La richiesta include un payload JSON contenente il nome utente e la password del dispositivo. Se la tua API restituisce un codice di stato HTTP 200, il dispositivo è autorizzato. Qualsiasi codice di stato diverso da 200 (come 401) comporta il rifiuto dell'accesso al dispositivo.

Durante la validazione delle ACL, vengono trasmessi quattro parametri: username, clientid, topic e acc. La tua API deve verificare che l'username sia autorizzato a eseguire l'operazione definita da acc sull'topic. Il parametro acc è definito come segue:

  1. accesso in lettura (1)
  2. accesso in scrittura (2)
  3. accesso in lettura e scrittura (3)
  4. accesso alla sottoscrizione (4)

Ad esempio, se l'utente userA tenta di sottoscrivere l'argomento sensors/temperatures, la tua API riceverà il seguente JSON:

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

Quando si utilizza l'autenticazione utente tramite un'API, è comunque possibile definire manualmente gli utenti nella dashboard di Stackhero. In tal caso, gli utenti definiti manualmente avranno la priorità.