Applikationsebene

Benutzeridentität

Die MQTT-Spezifikation definiert auf Applikationsebene lediglich eine Benutzername/Passwort-Authentifizierung, welche beim Verbindungsaufbau erfolgen kann. Weitere Mechanismen sind nicht spezifiziert und können applikativ gehandhabt werden. Manche Message Broker ermöglichen zum Beispiel auch die Verwendung des CommonName Attributs aus dem Clientzertifikat als Benutzeridentität, wodurch dann zum Beispiel Zugriffsrechte auf Topic-Ebene definiert werden können.

JSON Web Token (JWT)

JSON Web Token (JWT) sind ein offener Standard (nach RFC 7519), welche ein kompaktes und sich selbst beschreibendes Format definieren, um Informationen sicher zwischen Kommunikationsteilnehmern in Form eines JSON Objekts zu übertragen. Die Authentizität der übertragenen Information kann hierbei verifiziert und sichergestellt werden, da ein JWT mit einer digitalen Signatur versehen wird. Die Signatur kann hierbei über ein Shared Secret (via HMAC Algorithmus) oder einen Public/Private Key (via RSA) erfolgen.

Das am weitesten verbreitete Anwendungsbeispiel für JWT ist die Autorisierung eines Geräts oder Benutzers an einem Service. Sobald sich ein Benutzer an dem Service angemeldet hat, beinhalten alle weiteren Anfragen an den Service das JWT. Anhand des JWT kann der Service dann entscheiden, auf welche weiteren Dienste oder Ressourcen der Benutzer zugreifen darf. Hierdurch können zum Beispiel Single Sign On Lösungen in Cloud-Diensten realisiert werden.

Die SPS-Bibliothek Tc3_JsonXml stellt über die Methode FB_JwtEncode die Möglichkeit bereit, ein JSON Web Token zu erzeugen und zu signieren. Das Token kann dann z.B. im Payload der Nachricht oder auch in einem User Property verschickt werden, um bei der empfangenden Applikation eine Validierung der Nachricht zu ermöglichen.