Mosquitto: API autentifikavimas
Kaip autentifikuoti tūkstančius įrenginių naudojant išorinę API
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Mosquitto MQTT cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Neriboti žinučių mainai ir perdavimai.
- Neribota įrenginių autentifikacija per išorinę API.
- Pažangios ACL temos, vartotojams ir veiksmams.
- Pritaikomas domeno vardas apsaugotas HTTPS (pavyzdžiui, https://mqtt.jusu-imone.com).
- Lengvi atnaujinimai vienu paspaudimu.
- Optimali veikla ir tvirta sauga naudojant privačią ir dedikuotą VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių išbandyti Stackhero Mosquitto MQTT cloud hosting sprendimą!
Kalbant apie įrenginių autentifikavimą, turite du pagrindinius būdus. Galite naudoti paprastą metodą arba deleguoti autentifikavimą išorinei API.
Paprasčiausias metodas veikia gerai, jei turite mažiau nei 20 įrenginių ir nereikia pažangių ACL valdiklių. Tokiu atveju galite sukurti individualų prisijungimo vardą ir slaptažodį kiekvienam įrenginiui savo paslaugos konfigūracijoje Stackhero prietaisų skydelyje.
Arba galite deleguoti autentifikavimą išorinei API. Šis būdas siūlo dinaminį kredencialų valdymą ir leidžia įgyvendinti patikimas ACL. ACL (Prieigos Kontrolės Sąrašai) leidžia nustatyti tikslias teises publikuoti ar prenumeruoti konkrečias temas kiekvienam vartotojui.
Kaip veikia MQTT API autentifikavimas
Naudojant išorinę API autentifikaciją yra ypač naudinga, kai turite daugiau nei 20 IoT įrenginių arba kai reikia detalaus temų ACL valdymo.
Kai įrenginys prisijungia prie MQTT, Mosquitto siunčia HTTP POST užklausą jūsų API. Užklausa apima JSON duomenis su įrenginio prisijungimo vardu ir slaptažodžiu. Jei jūsų API grąžina HTTP statuso kodą 200, įrenginys yra autorizuotas. Bet koks kitas statuso kodas nei 200 (pvz., 401) reiškia, kad įrenginiui prieiga yra uždrausta.
ACL patikrinimo metu perduodami keturi parametrai: username, clientid, topic ir acc. Jūsų API turėtų patikrinti, ar username leidžiama atlikti operaciją, apibrėžtą acc, su topic. Parametras acc apibrėžiamas taip:
- skaitymo prieiga (1)
- rašymo prieiga (2)
- skaitymo ir rašymo prieiga (3)
- prenumeratos prieiga (4)
Pavyzdžiui, jei vartotojas userA bando prenumeruoti temą sensors/temperatures, jūsų API gaus šį JSON:
{
"username": "userA",
"clientid": "userA",
"topic": "sensors/temperatures",
"acc": 4
}
Kai naudojate vartotojo autentifikavimą per API, vis tiek galite rankiniu būdu apibrėžti vartotojus Stackhero prietaisų skydelyje. Tokiu atveju rankiniu būdu apibrėžti vartotojai turės prioritetą.
MQTT API autentifikavimas Node.js
Norėdami parodyti, kaip veikia išorinė API autentifikacija praktikoje, sukūrėme pavyzdinį API serverį naudojant Node.js. Galite peržiūrėti visą saugyklą čia: https://github.com/stackhero-io/mosquittoGettingStarted.
MQTT API autentifikavimas su Node-RED
Stackhero for Node-RED apima Mosquitto serverį. Vis dėlto, pažangiam naudojimui rekomenduojama turėti atskirą Mosquitto paslaugą. Šis pavyzdys rodo, kaip naudoti API autentifikavimo sistemą su atskira Mosquitto paslauga ir Node-RED paslauga. Jei naudojate Mosquitto paslaugą, įtrauktą į jūsų Node-RED, šis vadovas jums netaikomas.
Stackhero for Node-RED pateikia MQTT API jungties pavyzdį sraute, pavadintame "MQTT authentication." Šis srautas taip pat naudojamas su integruotu Mosquitto serveriu Stackhero for Node-RED.
Mosquitto konfigūravimas naudoti Node-RED kaip autentifikavimo API
Norėdami naudoti Node-RED kaip jūsų API autentifikavimo galinį tašką, atnaujinkite savo Mosquitto konfigūraciją taip:
- Įjunkite
API authenticationparinktį. - Nustatykite
Hostlauką į savo Node-RED domeną. - Pasirinkite
HTTPSkaipProtocolir įveskite443kaipPort. - Nurodykite
User routekaip/mqttAuthentication/userGet. - Nurodykite
ACLs routekaip/mqttAuthentication/aclCheck.
Derinimui galite nustatyti "Authentication cache time" į 1 sekundę. Kai jūsų nustatymai veikia sklandžiai, rekomenduojama vertė yra 30 sekundžių.
Mosquitto konfigūracijos pavyzdys
Node-RED konfigūravimas kaip MQTT autentifikavimo API
Atnaujinę Mosquitto konfigūraciją, paleiskite Node-RED ir atidarykite MQTT authentication srautą. Redaguokite Users mazgą, kad sukonfigūruotumėte savo vartotojo kredencialus. Pateikti pavyzdžiai apima kelias prisijungimo vardo ir slaptažodžio kombinacijas. Nedvejodami pridėkite tiek vartotojų, kiek reikia.
Node-RED MQTT autentifikavimo srautas