Share via


MQTT-Clients

In diesem Artikel erfahren Sie, wie Sie MQTT-Clients und -Clientgruppen konfigurieren.

Clients

Clients können Geräte oder Anwendungen sein, z. B. Geräte oder Fahrzeuge, die MQTT-Nachrichten senden/empfangen.

Nehmen Sie beispielsweise ein Fuhrparkverwaltungsunternehmen mit Hunderten von LKWs und anderen Lieferfahrzeugen an. Sie können ihre Funktionen für Routing, Nachverfolgung, Fahrersicherheit und vorhersagbare Wartungsfunktionen verbessern, indem Sie MQTT-Nachrichten an einen bzw. von einem Clouddienst senden bzw. von einem Clouddienst empfangen.

In diesem Szenario können Fahrzeuge als Clients konfiguriert werden, die verschiedene Themen wie Wetterinformationen, Straßenbedingungen, geografischer Standort, Motorleistung und andere Verschleißaspekte des Fahrzeugs veröffentlichen/abonnieren. Und während der Konfiguration des Fahrzeugs als Kunde kann auch eine Reihe von Attributen wie Fahrzeugtyp, Jahr, Make & Model, max. Lastkapazität usw. in die Clientmetadaten aufgenommen werden.

Hinweis

  • Der Clientname kann 1 bis 128 Zeichen lang sein.
  • Der Clientname darf alphanumerische Zeichen, Bindestriche (-), Doppelpunkte (:), Punkte (.) und Unterstriche (_) enthalten, aber keine Leerzeichen. Groß-/Kleinschreibung muss beachtet werden und pro Namespace eindeutig sein.

Schlüsselbegriffe von Clientmetadaten

Clientauthentifizierungsname: Sie können einen eindeutigen Bezeichner für den Client ohne Azure Resource Manager-Benennungseinschränkungen bereitstellen. Es handelt sich um ein obligatorisches Feld. Wenn es nicht explizit angegeben wird, wird standardmäßig der Clientname verwendet.

Keine zwei Clients dürfen innerhalb eines Namespaces denselben Authentifizierungsnamen aufweisen. Bei der Authentifizierung eines Clients wird für den Clientauthentifizierungsnamen Groß-/Kleinschreibung nicht beachtet.

Wir behalten die ursprüngliche Groß-/Kleinschreibung des Clientauthentifizierungsnamens bei, die Sie im Client konfigurieren. Wir verwenden den ursprünglichen Clientauthentifizierungsnamen (unter Beachtung von Groß-/Kleinschreibung), der beim Erstellen des Clients angegeben wurde, in Routinganreicherungen, beim Themenbereichabgleich usw.

Hinweis

  • Der Clientauthentifizierungsname kann 1 bis 128  Zeichen lang sein, aus UTf-8-Zeichenfolgen bestehen und weist keine Einschränkungen auf.
  • Für den Clientauthentifizierungsnamen muss Groß-/Kleinschreibung beachtet werden, und er muss pro Namespace eindeutig sein (Groß-/Kleinschreibung wird beim Bestimmen der Eindeutigkeit ignoriert).

Clientzertifikat-Authentifizierungsüberprüfungsschema: Um ein Zertifizierungsstellenzertifikat für die Authentifizierung zu verwenden, können Sie eine der folgenden Optionen auswählen, um den Speicherort der Clientidentität im Clientzertifikat anzugeben. Wenn der Client versucht, eine Verbindung mit dem Dienst herzustellen, sucht der Dienst nach der Clientidentifikation aus diesem Zertifikatfeld und gleicht sie mit dem Clientauthentifizierungsnamen ab, um den Client zu authentifizieren.

Wir unterstützen fünf Zertifikatfelder:

  • Antragsteller entspricht Authentifizierungsname
  • DNS entspricht Authentifizierungsname
  • URI entspricht Authentifizierungsname
  • IP-Adresse entspricht Authentifizierungsname
  • E-Mail-Adresse entspricht Authentifizierungsname

Verwenden Sie die Option „Fingerabdruckabgleich“, wenn Sie ein selbstsigniertes Zertifikat verwenden, um den Client zu authentifizieren.

Hinweis

  • clientCertificateAuthentication ist immer mit einem gültigen Wert validationScheme erforderlich.
  • authenticationName ist nicht erforderlich, aber nach der ersten Erstellungsanforderung wird der authenticationName-Wert standardmäßig auf den ARM-Namen festgelegt und kann dann nicht mehr aktualisiert werden.
  • authenticationName kann nicht aktualisiert werden.
  • Wenn validationScheme ein anderer Wert als ThumbprintMatch ist, kann die allowedThumbprints-Liste nicht bereitgestellt werden.
  • Die allowedThumbprints-Liste kann nur und muss bereitgestellt werden, wenn validationScheme den Wert ThumbprintMatch mit mindestens einem Fingerabdruck aufweist.
  • allowedThumbprints kann nur maximal 2 Fingerabdrücke enthalten.
  • Zulässige validationScheme-Werte sind SubjectMatchesAuthenticationName, DnsMatchesAuthenticationName, UriMatchesAuthenticationName, IpMatchesAuthenticationName, EmailMatchesAuthenticationName, ThumbprintMatch.
  • Die Verwendung des Fingerabdrucks mit erlaubter Wiederverwendung desselben Zertifikats über mehrere Clients hinweg. Für andere Validierungstypen muss sich der Authentifizierungsname im ausgewählten Feld des Clientzertifikats befinden.

Clientattribute

Clientattribute sind eine Reihe von benutzerdefinierten Schlüssel-Wert-Paaren oder Tags, die Informationen zum Client bereitstellen.

Diese Clientattribute können zum Erstellen der Clientgruppen verwendet werden. Sie können beispielsweise alle Fahrzeuge des Typs „Sattelschlepper“ in einer Gruppe und alle Fahrzeuge des Typs „Kleintransporter“ in einer anderen Gruppe zusammenfassen.

Diese Attribute werden in Clientgruppenabfragen verwendet, um eine Gruppe von Clients zu filtern. Attribute können die physischen oder funktionalen Merkmale des Clients beschreiben. Ein typisches Attribut kann der „Typ“ des Clients sein.

Hier sehen Sie ein Beispiel:

  • Typ: Werte können „Sensor“ oder „Thermostat“ oder „Fahrzeug“ sein.

Hier sehen Sie ein Beispielschema für den Client mit einer Attributdefinition:

{  
    "id": "device123",  
    "attributes": {  
        "type": "home-sensors",
        "sensors": ["motion", "noise", "light"]
     }
}

Berücksichtigen Sie beim Konfigurieren der Clientattribute die Themen, in denen die Clients veröffentlichen (die sie abonnieren). Wenn Sie von Themen zu Clients zurückdenken, können Sie die Gemeinsamkeiten zwischen Clientrollen leichter identifizieren und die Clientattribute definieren, um die Clientgruppierung zu vereinfachen.

Hinweis

  • Clientattributschlüssel müssen im Client eindeutig sein. Schlüssel können nicht wiederholt werden.
  • Clientattributewerte können vom Typ string, integer oder array of strings sein.
  • Die Gesamtgröße der Clientattribute für einen Client muss immer kleiner als 4 KB sein.
  • Der Clientattributname (Schlüssel) darf nur alphanumerische Zeichen und Unterstriche (_) enthalten.

Beispielverträge

Beispiel für auf der Zertifikatkette basierende Clientauthentifizierung

{
    "properties": {
        "authenticationName": "127.0.0.1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "IpMatchesAuthenticationName"
        },
        "attributes": {
            "room": "345",
            "floor": 3,
            "bldg": "17"
        },
        "description": "Description of the client"
    }
}

Beispiel für auf dem Fingerabdruck eines selbstsignierten Zertifikats basierende Clientauthentifizierung

{
    "properties": {
        "authenticationName": "abcd@domain.com-1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "ThumbprintMatch",
            "allowedThumbprints": ["primary", "secondary"]
        },
        "attributes": {
            "room": "345",
            "floor": "3",
            "bldg": 17
        },
        "description": "Description of the client"
    }
}

Konfiguration des Azure-Portals

Verwenden Sie die folgenden Schritte, um einen Client zu erstellen:

  1. Navigieren Sie im Azure-Portal zu Ihrem Namespace.

  2. Wählen Sie unter „Clients“ die Option + Client aus.

    Screenshot of adding a client.

  3. Wählen Sie das Überprüfungsschema für die Clientzertifikatauthentifizierung aus. Weitere Informationen zur Konfiguration von Clientauthentifizierung finden Sie im Artikel zur Clientauthentifizierung.

  • Fügen Sie Clientattribute hinzu.

    Screenshot of client configuration.

  1. Klicken Sie auf Erstellen

Azure CLI-Konfiguration

Verwenden Sie die folgenden Befehle zum Erstellen/Anzeigen/Löschen eines Clients.

Erstellen des Clients

az eventgrid namespace client create -g myRG --namespace-name myNS -n myClient

Get client

az eventgrid namespace client show -g myRG --namespace-name myNS -n myClient

Delete client

az eventgrid namespace client delete -g myRG --namespace-name myNS -n myClient

Nächste Schritte