Mosquitto: Wie die MQTT-API-Authentifizierung funktioniert

Diese Dokumentation ist Teil des API-Authentifizierung-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Wie man Tausende von Geräten mit einer externen API authentifiziert.

👋 Willkommen in der Stackhero-Dokumentation!

Stackhero bietet Ihnen eine vollständig verwaltete Mosquitto MQTT Cloud-Umgebung, die auf Zuverlässigkeit und Flexibilität ausgelegt ist:

  • Unbegrenzter Nachrichtendurchsatz und unbegrenzte Datenübertragungen, damit Ihre Workflows niemals auf künstliche Grenzen stoßen.
  • Unbegrenzte Geräteauthentifizierung über Ihre eigene externe API, um Onboarding und Zugriffsverwaltung nahtlos zu gestalten.
  • Erweiterte ACLs für eine feingranulare Steuerung von Topics, Benutzern und Aktionen.
  • Ein individueller Domainname mit integriertem HTTPS für sichere, markenkonforme Endpunkte (zum Beispiel: https://mqtt.your-company.com).
  • Updates ohne Aufwand: Verbesserungen oder Sicherheitspatches mit nur einem Klick anwenden.
  • Gleichbleibende Performance und hohe Sicherheit, da jede Instanz auf einer privaten, dedizierten Infrastruktur läuft.

Beschleunigen Sie Ihre IoT-Projekte und reduzieren Sie den Betriebsaufwand. Sie können in nur wenigen Minuten eine sichere, produktionsreife Mosquitto MQTT Cloud Hosting-Instanz bereitstellen.

Die Verwendung der externen API-Authentifizierung ist besonders nützlich, wenn Sie mehr als 20 IoT-Geräte haben oder eine detaillierte Themen-ACL-Verwaltung benötigen.

Wenn sich ein Gerät mit MQTT verbindet, sendet Mosquitto eine HTTP-POST-Anfrage an Ihre API. Die Anfrage enthält eine JSON-Nutzlast mit dem Benutzernamen und Passwort des Geräts. Wenn Ihre API einen HTTP-Statuscode 200 zurückgibt, ist das Gerät autorisiert. Jeder andere Statuscode als 200 (wie 401) führt dazu, dass dem Gerät der Zugriff verweigert wird.

Während der ACL-Validierung werden vier Parameter übermittelt: username, clientid, topic und acc. Ihre API sollte überprüfen, ob der username berechtigt ist, die durch acc definierte Operation auf dem topic auszuführen. Der acc-Parameter ist wie folgt definiert:

  1. Lesezugriff (1)
  2. Schreibzugriff (2)
  3. Lese- und Schreibzugriff (3)
  4. Abonnementzugriff (4)

Zum Beispiel, wenn der Benutzer userA versucht, das Thema sensors/temperatures zu abonnieren, erhält Ihre API folgendes JSON:

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

Wenn Sie die Benutzerauthentifizierung über eine API verwenden, können Sie weiterhin Benutzer manuell im Stackhero-Dashboard definieren. In diesem Fall haben die manuell definierten Benutzer Vorrang.