Partager via


Clients MQTT

Dans cet article, vous allez découvrir comment configurer les clients et groupes de clients MQTT.

Clients

Les clients peuvent être des appareils ou des applications, tels que des appareils ou des véhicules qui envoient/reçoivent des messages MQTT.

Par exemple, considérez une société de gestion de flotte avec des centaines de camions et d’autres véhicules de livraison. Vous pouvez améliorer leurs fonctionnalités de routage, de suivi, de sécurité des pilotes et de maintenance prévisible en envoyant et en recevant des messages MQTT vers/à partir d’un service cloud.

Dans ce scénario, les véhicules peuvent être configurés en tant que clients qui publient ou s’abonnent à divers sujets tels que les informations météorologiques, les conditions routières, l’emplacement géographique, les performances du moteur et d’autres aspects liés à l’usure du véhicule. Et, lors de la configuration du véhicule en tant que client, un ensemble d’attributs tels que le type de véhicule, l’année, la création et le modèle, la capacité de chargement maximale, etc. peuvent également être inclus dans les métadonnées du client.

Remarque

  • Un nom de client peut contenir entre 1 et 128 caractères.
  • Le nom du client peut inclure les alphanumériques, les traits d’union(-), deux-points(:), point(.) et les traits de soulignement(_), aucun espace. Il respecte la casse et doit être unique par espace de noms.

Termes clés des métadonnées client

Nom d’authentification du client : Vous pouvez fournir un identificateur unique pour le client sans contraintes de nommage Azure Resource Manager. Il s’agit d’un champ obligatoire et s’il n’est pas fourni explicitement, il est défini par défaut sur le Nom du client.

Aucun client ne peut avoir le même nom d’authentification dans un espace de noms. Lors de l’authentification d’un client, nous considérons le nom d’authentification du client comme insensible à la casse.

Nous conservons le cas d’origine du nom d’authentification du client que vous configurez dans le client. Nous utilisons le nom d’authentification du client d’origine (respectant la casse) qui a été fourni lors de la création du client, dans les enrichissements de routage, la correspondance d’espace de rubrique, etc.

Notes

  • Le nom d’authentification client peut contenir entre 1 et 128 caractères, des chaînes UTf-8, aucune restriction
  • Le nom d’authentification du client respecte la casse et doit être unique par espace de noms (la casse est ignorée lors de la détermination de l’unicité)

Schéma de validation de l’authentification par certificat client : Pour utiliser le certificat d’autorité de certification pour l’authentification, vous pouvez choisir parmi l’une des options suivantes pour spécifier l’emplacement de l’identité du client dans le certificat client. Lorsque le client tente de se connecter au service, le service recherche l’identification du client à partir de ce champ de certificat et la fait correspondre au nom d’authentification du client pour l’authentifier.

Nous prenons en charge cinq champs de certificat :

  • L’objet correspond au nom d’authentification
  • Le DNS correspond au nom d’authentification
  • L’URI correspond au nom d’authentification
  • L’IP correspond au nom d’authentification
  • L’e-mail correspond au nom d’authentification

Utilisez l’option « Correspondance d’empreinte numérique » lors de l’utilisation d’un certificat auto-signé pour authentifier le client.

Notes

  • clientCertificateAuthentication est toujours requis avec une valeur valide validationScheme.
  • authenticationName n’est pas obligatoire, mais après la première demande de création, la valeur authenticationName par défaut est le nom ARM, puis elle ne peut pas être mise à jour.
  • authenticationName ne peut pas être mis à jour.
  • Si validationScheme est autre que ThumbprintMatch, la liste allowedThumbprints ne peut pas être fournie.
  • La liste allowedThumbprints ne peut être fournie que si validationScheme est ThumbprintMatch avec au moins une empreinte numérique.
  • allowedThumbprints ne peut contenir qu’un maximum de 2 empreintes.
  • Les valeurs validationScheme autorisées sont SubjectMatchesAuthenticationName, DnsMatchesAuthenticationName, UriMatchesAuthenticationName, IpMatchesAuthenticationName, EmailMatchesAuthenticationName, ThumbprintMatch
  • Utilisation de l’empreinte numérique avec permission de réutilisation du même certificat sur plusieurs clients. Pour d’autres types de validation, le nom d’authentification doit se trouver dans le champ choisi du certificat client.

Attributs client

Les attributs client sont un ensemble de paires clé-valeur définies par l’utilisateur ou de balises qui fournissent des informations sur le client.

Ces attributs client peuvent être utilisés pour créer les groupes de clients. Par exemple, vous pouvez regrouper tous les véhicules de type semi remorque dans un groupe et tous les véhicules de type pick-up dans un autre.

Ces attributs sont utilisés dans les requêtes de groupe de clients pour filtrer un ensemble de clients. Les attributs peuvent décrire les caractéristiques physiques ou fonctionnelles du client. L’attribut classique peut être le « type » du client.

Voici un exemple :

  • Type : les valeurs peuvent être « sensor » ou « thermostat » ou « vehicle »

Voici un exemple de schéma pour le client avec une définition d’attribut :

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

Lors de la configuration des attributs client, tenez compte des rubriques dans lesquelles les clients publient (s’abonnent). Le fait de passer des rubriques aux clients permet d’identifier plus facilement les points communs entre les rôles clients et de définir les attributs du client pour simplifier le regroupement de clients.

Notes

  • Les clés d’attribut client doivent être uniques dans le client. Les clés ne peuvent pas être répétées.
  • Les valeurs d’attribut client peuvent être de types string, integer ou array of strings.
  • La taille totale des attributs client pour un client doit toujours être inférieure à 4 Ko.
  • Le nom d’attribut client (clé) ne peut contenir que des caractères alphanumériques et un trait de soulignement(_).

Exemples de contrats

Exemple d’authentification client basée sur la chaîne de certificats

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

Exemple d’authentification client basée sur l’empreinte numérique de certificat auto-signé

{
    "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"
    }
}

Configuration du portail Azure

Utilisez les étapes suivantes pour créer un client :

  1. Accédez à votre espace de noms dans le Portail Azure

  2. Sous Clients, sélectionnez + Client.

    Screenshot of adding a client.

  3. Choisissez le schéma de validation de l’authentification par certificat client. Pour plus d’informations sur la configuration de l’authentification client, consultez l’article sur l’authentification du client.

  • Ajoutez des attributs client.

    Screenshot of client configuration.

  1. Sélectionnez Créer

Configuration d’Azure CLI

Utilisez les commandes suivantes pour créer/afficher/supprimer un client

Créer un client

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

Obtenir le client

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

Supprimer le client

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

Étapes suivantes