Schnellstart: Veröffentlichen und Abonnieren von MQTT-Nachrichten im Event Grid-Namespace mit dem Azure-Portal

In diesem Artikel wird das Azure-Portal für die folgenden Aufgaben verwendet:

  1. Erstellen eines Event Grid-Namespaces und Aktivieren von MQTT-Vermittlers
  2. Erstellen von Unterressourcen wie Clients, Clientgruppen und Themenbereichen
  3. Gewähren des Zugriffs von Clients zum Veröffentlichen und Abonnieren von Themenbereichen
  4. Veröffentlichen und Empfangen von Nachrichten zwischen Clients

Voraussetzungen

  • Falls Sie über kein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Azure-Konto.
  • Wenn Sie noch nicht mit Azure Event Grid vertraut sind, lesen Sie den Überblick über Event Grid, bevor Sie mit diesem Tutorial beginnen.
  • Stellen Sie sicher, dass Port 8883 in Ihrer Firewall geöffnet ist. Für das Beispiel in diesem Tutorial wird das MQTT-Protokoll verwendet, das über Port 8883 kommuniziert. In einigen Netzwerkumgebungen von Unternehmen oder Bildungseinrichtungen ist dieser Port unter Umständen blockiert.
  • Sie benötigen ein X.509-Clientzertifikat, um den Fingerabdruck zu generieren und die Clientverbindung zu authentifizieren.

Generieren eines Beispielclientzertifikats und Fingerabdrucks

Wenn Sie noch kein Zertifikat besitzen, können Sie mit der Step CLI ein Beispielzertifikat generieren. Erwägen Sie die manuelle Installation für Windows.

Nach einer erfolgreichen Installation von Step sollten Sie eine Eingabeaufforderung in Ihrem Benutzerprofilordner öffnen (WINDOWS+R, geben Sie %USERPROFILE% ein).

  1. Führen Sie den folgenden Befehl aus, um Stamm- und Zwischenzertifikate zu erstellen. Merken Sie sich das Kennwort. Es muss im nächsten Schritt verwendet werden.

    step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
    
  2. Verwenden der generierten Zertifizierungsstellendateien zum Erstellen eines Zertifikats für den ersten Client. Stellen Sie sicher, dass Sie den richtigen Pfad für die Zertifikat- und Geheimnisdateien im Befehl verwenden.

    step certificate create client1-authn-ID client1-authn-ID.pem client1-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  3. Führen Sie zum Anzeigen des Fingerabdrucks den Step-Befehl aus.

    step certificate fingerprint client1-authn-ID.pem
    
  4. Erstellen Sie nun ein Zertifikat für den zweiten Client

    step certificate create client2-authn-ID client2-authn-ID.pem client2-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  5. Um den Fingerabdruck anzuzeigen, der mit dem zweiten Client verwendet werden soll, führen Sie den Step-Befehl aus:

    step certificate fingerprint client2-authn-ID.pem
    

Erstellen eines Namespace

  1. Melden Sie sich beim Azure-Portalan.

  2. Geben Sie auf der Suchleiste „Event Grid-Namespaces“ ein, und wählen Sie dann Event Grid-Namespaces aus der Dropdownliste aus.

    Screenshot of searching for Event Grid namespace on Azure portal.

  3. Wählen Sie auf der Seite „Event Grid-Namespaces“ die Option + Erstellen auf der Symbolleiste aus.

  4. Führen Sie auf der Seite „Namespace erstellen“ die folgenden Schritte aus:

    1. Wählen Sie Ihr Azure-Abonnement.

    2. Wählen Sie eine bereits vorhandene Ressourcengruppe aus, oder wählen Sie „Neu erstellen“ aus, und geben Sie einen Namen für die Ressourcengruppe ein.

    3. Geben Sie einen eindeutigen Namen für den Namespace an. Der Namespacename muss pro Region eindeutig sein, da er einen DNS-Eintrag darstellt. Verwenden Sie nicht den Namen, der in der Abbildung zu sehen ist. Erstellen Sie stattdessen einen eigenen Namen. Dieser muss zwischen drei und 50 Zeichen lang sein und darf nur folgende Zeichen enthalten: a–z, A–Z, 0–9 und Bindestriche (-).

    4. Wählen Sie einen Speicherort für den Event Grid-Namespace aus. Derzeit ist der Event Grid-Namespace nur in ausgewählten Regionen verfügbar.

      Screenshot showing Event Grid namespace create flow basics tab.

  5. Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.

  6. Wählen Sie auf der Registerkarte Überprüfen und erstellen der Seite Namespace erstellen die Option Erstellen aus.

    Hinweis

    Um den Schnellstart einfach zu halten, verwenden Sie nur die Seite „Grundeinstellungen“, um einen Namespace zu erstellen. Ausführliche Schritte zur Konfiguration von Netzwerk-, Sicherheits- und anderen Einstellungen auf anderen Seiten des Assistenten finden Sie unter Erstellen eines Namespaces.

  7. Nachdem die Bereitstellung erfolgreich war, wählen Sie Zu Ressource wechseln, um zur Übersichtsseite des Event Grid-Namespaces für Ihren Namespace zu navigieren.

  8. Auf der Übersichtsseite sehen Sie, dass sich der MQTT-Vermittler im Status Deaktiviert befindet. Um den MQTT-Vermittler zu aktivieren, wählen Sie den Link Deaktiviert aus, der Sie zur Konfigurationsseite weiterleitet.

  9. Wählen Sie auf der Seite Konfiguration die Option MQTT-Vermittler aktivieren und dann Anwenden aus, um die Einstellungen zu übernehmen.

    Screenshot showing Event Grid namespace configuration page to enable MQTT.

Erstellen von Clients

  1. Wählen Sie im linken Menü im Abschnitt MQTT-Vermittler die Option Clients aus.

  2. Wählen Sie auf der Seite Clients die Option + Client auf der Symbolleiste aus.

    Screenshot of the Clients page with Add button selected.

  3. Geben Sie auf der Seite Client erstellen unter Name einen Namen für den Client ein. Clientnamen müssen in einem Namespace eindeutig sein.

  4. Der Clientauthentifizierungsname ist standardmäßig der Clientname. Ändern Sie ihn für dieses Tutorial in client1-authn-ID. Sie müssen diesen Namen als Benutzernamen (Username) in das CONNECT-Paket aufnehmen.

  5. In diesem Tutorial verwenden Sie die fingerabdruckbasierte Authentifizierung. Fügen Sie den Zertifikatfingerabdruck des ersten Clients unter Primärer Fingerabdruck ein.

    Screenshot of client 1 configuration.

  6. Wählen Sie in der Symbolleiste die Option Erstellen aus, um einen weiteren Client zu erstellen.

  7. Wiederholen Sie die oben aufgeführten Schritte, um einen zweiten Client namens client2 zu erstellen. Ändern Sie den Authentifizierungsnamen in client2-authn-ID, und geben Sie den Zertifikatfingerabdruck des zweiten Clients unter Primärer Fingerabdruck ein.

    Screenshot of client 2 configuration.

    Hinweis

    • Um den Schnellstart einfach zu halten, verwenden Sie den Fingerabdruckabgleich zur Authentifizierung. Detaillierte Schritte zur Verwendung der X.509 CA-Zertifikatskette für die Clientauthentifizierung finden Sie unter Clientauthentifizierung mit Zertifikatskette.
    • Außerdem verwenden wir für diese Übung die Standardclientgruppe $all, die alle Clients im Namespace umfasst. Weitere Informationen zum Erstellen von benutzerdefinierten Clientgruppen mithilfe von Clientattributen finden Sie unter „Clientgruppen“.

Erstellen von Themenbereichen

  1. Wählen Sie im linken Menü im Abschnitt MQTT-Vermittler die Option Themenbereiche aus.

  2. Wählen Sie auf der Seite Themenbereiche die Option + Themenbereich auf der Symbolleiste aus.

    Screenshot of Topic spaces page with create button selected.

  3. Geben Sie einen Namen für den Themenbereich auf der Seite Themabereich erstellen ein.

  4. Wählen Sie + Themenvorlage hinzufügen aus.

    Screenshot of Create topic space with the name.

  5. Geben Sie contosotopics/topic1 für die Themenvorlage ein, und wählen Sie dann Erstellen aus, um den Themenbereich zu erstellen.

    Screenshot of topic space configuration.

Konfigurieren der Zugriffssteuerung mithilfe von Berechtigungsbindungen

  1. Wählen Sie im linken Menü im Abschnitt MQTT-Vermittler die Option Berechtigungsbindungen aus.

  2. Wählen Sie auf der Seite „Berechtigungsbindungen“ die Option + Berechtigungsbindung auf der Symbolleiste aus.

    Screenshot that shows the Permission bindings page with the Create button selected.

  3. Konfigurieren Sie die Berechtigungsbindung wie folgt:

    1. Geben Sie einen Namen für die Berechtigungsbindung an. Beispiel: contosopublisherbinding.

    2. Wählen Sie für Clientgruppenname den Namen $allaus.

    3. Wählen Sie unter Name des Themenbereichs den Themenbereich aus, den Sie im vorherigen Schritt erstellt haben.

    4. Erteilen Sie der Clientgruppe die Berechtigung Herausgeber für den Themenbereich.

      Screenshot showing creation of first permission binding.

  4. Wählen Sie Erstellen aus, um die Berechtigungsbindung zu erstellen.

  5. Erstellen Sie eine weitere Berechtigungsbindung (contososubscriberbinding), indem Sie + Berechtigungsbindung auf der Symbolleiste auswählen.

  6. Geben Sie einen Namen an, und erteilen Sie wie dargestellt der Clientgruppe $all Zugriff vom Typ Abonnent auf ContosoTopicSpace.

    Screenshot showing creation of second permission binding.

  7. Wählen Sie Erstellen aus, um die Berechtigungsbindung zu erstellen.

Herstellen einer Verbindung zwischen den Clients mit dem EG-Namespace mithilfe der MQTTX-App

  1. Zum Veröffentlichen/Abonnieren von MQTT-Nachrichten können Sie jedes Ihrer bevorzugten Tools verwenden. Zur Veranschaulichung wird das Veröffentlichen/Abonnieren mithilfe der MQTTX-App gezeigt, die Sie unter https://mqttx.app/ herunterladen können.

    Screenshot showing MQTTX app left rail to add new client.

  2. Konfigurieren von „client1“ mit

    • Name als client1 (dieser Wert kann beliebig sein)

    • Client-ID als client1-session1 (Die Client-ID im CONNECT-Paket wird verwendet, um die Sitzungs-ID für die Clientverbindung zu identifizieren.)

    • Benutzername als client1-authn-ID. Dieser Wert muss mit dem Wert Clientauthentifizierungsname übereinstimmen, den Sie beim Erstellen des Clients im Azure-Portal angegeben haben.

      Wichtig

      Der Benutzername muss mit dem Clientauthentifizierungsnamen in den Clientmetadaten übereinstimmen.

  3. Aktualisieren Sie auf der Übersichtsseite für den Namespace den Hostnamen in „MQTT-Hostname“.

    Screenshot showing Event Grid namespace overview page, which has MQTT hostname.

  4. Aktualisieren Sie Port auf 8883.

  5. Schalten Sie SSL/TLS auf „EIN“.

  6. Schalten Sie SSL Secure auf „EIN“ um, um die Überprüfung des Dienstzertifikats sicherzustellen.

  7. Wählen Sie für Zertifikat die Option Selbstsigniert aus.

  8. Geben Sie den Pfad der Clientzertifikatdatei an.

  9. Geben Sie den Pfad für die Clientschlüsseldatei an.

  10. Für die restlichen Einstellungen können Sie die vordefinierten Standardwerte belassen.

    Screenshot showing client 1 configuration part 1 on MQTTX app.

  11. Wählen Sie Verbinden aus, um den Client mit dem MQTT-Vermittler zu verbinden.

  12. Wiederholen Sie die obigen Schritte, um eine Verbindung des zweiten Clients client2 mit den entsprechenden Authentifizierungsinformationen wie dargestellt herzustellen.

    Screenshot showing client 2 configuration part 1 on MQTTX app.

    Screenshot showing client 2 configuration part 2 on MQTTX app.

Veröffentlichen/Abonnieren mithilfe der MQTTX-App

  1. Nachdem Sie die Verbindung mit den Clients hergestellt haben, wählen Sie für „client2“ die Schaltfläche + Neues Abonnement aus.

  2. Fügen Sie contosotopics/topic1 als Thema hinzu, und wählen Sie Bestätigen aus. Für die anderen Felder können Sie die vorhandenen Standardwerte belassen.

    Screenshot showing subscription topic configuration on MQTTX app.

  3. Wählen Sie client1 auf der linken Leiste aus.

  4. Geben Sie in „client1“ über dem Feld zum Verfassen von Nachrichten contosotopics/topic1 als Thema für die Veröffentlichung ein.

  5. Erstellen Sie eine Nachricht. Sie können ein beliebiges Format oder das JSON-Format wie gezeigt verwenden.

  6. Wählen Sie die Schaltfläche Send (Senden) aus.

    Screenshot showing message publishing on the topic in MQTTX app.

  7. Die Nachricht sollte in Client 1 als „Veröffentlicht“ angezeigt werden.

    Screenshot showing message published on the topic in MQTTX app.

  8. Wechseln Sie zu client2. Überprüfen Sie, ob client2 die Nachricht empfangen hat.

    Screenshot showing the message received by the subscribing client on MQTTX app.

Nächste Schritte