Authentification cliente MQTT en utilisant des certificats

Le MQTT broker d’Azure Event Grid prend en charge l’authentification des clients à l’aide de certificats X.509. Le certificat X.509 fournit les informations d’identification permettant d’associer un client particulier au locataire. Dans ce modèle, l’authentification se produit généralement une fois pendant l’établissement de la session. Ensuite, toutes les opérations futures utilisant la même session sont supposées provenir de cette identité.

Les modes d’authentification pris en charge sont les suivants :

  • Certificats émis par une autorité de certification
  • Certificat du client auto-signé : empreinte
  • Jeton Microsoft Entra ID

Cet article aborde les certificats. Pour en savoir plus sur l’authentification au moyen de jetons Microsoft Entra ID, consultez Authentifier le client avec des jetons Microsoft Entra ID.

Certificats signés par une autorité de certification (AC)

Dans cette méthode, un certificat X.509 racine ou intermédiaire est inscrit auprès du service. Essentiellement, le certificat racine ou intermédiaire utilisé pour signer le certificat client doit d’abord être inscrit auprès du service.

Important

  • Veillez à charger le certificat racine ou intermédiaire utilisé pour signer le certificat client. Il n’est pas nécessaire de charger l’intégralité de la chaîne de certificats.
  • Par exemple, si vous avez une chaîne de certificats racines, intermédiaires et feuilles, veillez à charger le certificat intermédiaire qui a signé les certificats de nœud terminal/client.

Capture d’écran montrant la page des certificats de l’autorité de certification avec les certificats racine et intermédiaire utilisés pour signer les certificats client.

Lors de l’inscription des clients, vous devez identifier le champ de certificat utilisé pour contenir le nom d’authentification du client. Le service met en correspondance le nom d’authentification du certificat avec le nom d’authentification du client dans les métadonnées du client pour valider le client. Le service valide également le certificat client en vérifiant s’il est signé par le certificat racine ou intermédiaire précédemment inscrit.

Capture d’écran montrant les métadonnées du client avec les cinq schémas de validation basés sur la chaîne de certificats.

Certificat du client auto-signé : empreinte

Dans cette méthode d’authentification, le registre des clients stocke l’empreinte exacte du certificat que le client va utiliser pour s’authentifier. Lorsque le client tente de se connecter au service, le service valide le client en comparant l’empreinte numérique présentée dans le certificat client avec l’empreinte numérique stockée dans les métadonnées du client.

Capture d’écran montrant les métadonnées du client avec le système d’authentification par empreinte.

Notes

  • Nous vous recommandons d’inclure le nom d’authentification du client dans le champ nom d’utilisateur du paquet de connexion du client. À l’aide de ce nom d’authentification et du certificat client, le service peut authentifier le client.
  • Si vous ne fournissez pas le nom d’authentification dans le champ nom d’utilisateur, vous devez configurer les autres champs sources pour le nom d’authentification du client à la portée de l’espace de noms. Le service recherche le nom d’authentification du client dans le champ correspondant du certificat client pour authentifier la connexion du client.

Dans la page de configuration de la portée de l’espace de noms, vous pouvez activer d’autres sources de nom d’authentification client, puis sélectionner les champs de certificat client qui ont le nom d’authentification client.

Capture d’écran montrant la page de configuration de l’espace de noms avec le nom d’authentification du client et les paramètres de la source alternative.

L’ordre de sélection des champs de certificat client dans la page de configuration de l’espace de noms est important. Le service recherche le nom d’authentification du client dans les champs de certificat client dans le même ordre.

Par exemple, si vous sélectionnez d’abord l’option DNS certificat, puis l’option Nom de l’objet, lors de l’authentification de la connexion du client,

  • le service vérifie d’abord le champ DNS de l’autre nom d’objet du certificat client pour le nom d’authentification du client
  • si le champ DNS est vide, le service vérifie le champ Nom de l’objet du certificat client
  • si le nom d’authentification du client n’est pas présent dans l’un de ces deux champs, la connexion du client est refusée

Dans les deux modes d’authentification du client, nous nous attendons à ce que le nom d’authentification du client soit fourni dans le champ nom d’utilisateur du paquet de connexion ou dans l’un des champs de certificat client.

Champs de certificat client pris en charge pour une autre source de nom d’authentification client

Vous pouvez utiliser l’un des champs suivants pour fournir le nom d’authentification du client dans le certificat client.

Option de source du nom d’authentification Champ Certificat Description
Nom d’objet du certificat tls_client_auth_subject_dn Le nom unique du sujet du certificat.
DNS de certificat tls_client_auth_san_dns L’entrée SAN dNSName dans le certificat.
URI de certificat tls_client_auth_san_uri L’entrée SAN uniformResourceIdentifier dans le certificat.
IP du certificat tls_client_auth_san_ip Adresse IPv4 ou IPv6 présente dans l’entrée SAN iPAddress dans le certificat.
Email de certificat tls_client_auth_san_email L’entrée SAN rfc822Name dans le certificat.

Étapes suivantes