Client MQTT

Questo articolo illustra come configurare i client MQTT e i gruppi client.

Client

I client possono essere dispositivi o applicazioni, ad esempio dispositivi o veicoli che inviano/ricevono messaggi MQTT.

Si consideri, ad esempio, una società di gestione della flotta con centinaia di camion e altri veicoli di spedizione. È possibile migliorare il routing, il rilevamento, la sicurezza dei driver e le funzionalità di manutenzione prevedibili inviando e ricevendo messaggi MQTT da e verso un servizio cloud.

In questo scenario, i veicoli possono essere configurati come client che pubblicano/sottoscrivono vari argomenti, ad esempio informazioni meteo, condizioni stradali, posizione geografica, prestazioni del motore e altri aspetti di usura e strappo del veicolo. Inoltre, durante la configurazione del veicolo come client, un set di attributi, ad esempio tipo di veicolo, anno, make & model, capacità di carico massima e così via, può essere incluso anche nei metadati del client.

Nota

  • Il nome client può essere lungo 1-128 caratteri.
  • Il nome client può includere caratteri alfanumerici, trattini(-), due punti(:), dot(.) e underscore(_), senza spazi. Viene fatta distinzione tra maiuscole e minuscole e deve essere univoca per ogni spazio dei nomi.

Termini chiave dei metadati client

Nome autenticazione client: è possibile specificare un identificatore univoco per il client senza vincoli di denominazione di Azure Resource Manager. Si tratta di un campo obbligatorio e, se non specificato in modo esplicito, viene impostato su Nome client.

Nessun client può avere lo stesso nome di autenticazione all'interno di uno spazio dei nomi. Durante l'autenticazione di un client, il nome di autenticazione client viene trattato come senza distinzione tra maiuscole e minuscole.

Il caso originale del nome di autenticazione client configurato nel client viene mantenuto. Viene usato il nome di autenticazione client originale (con distinzione tra maiuscole e minuscole) fornito al momento della creazione del client, nell'arricchimento del routing, nella corrispondenza dello spazio degli argomenti e così via.

Nota

  • Il nome dell'autenticazione client può essere lungo 1-128 caratteri, stringhe UTf-8, senza restrizioni
  • Il nome dell'autenticazione client fa distinzione tra maiuscole e minuscole e deve essere univoco per ogni spazio dei nomi (il caso viene ignorato durante la determinazione dell'univocità)

Schema di convalida dell'autenticazione del certificato client: per usare il certificato CA per l'autenticazione, è possibile scegliere tra una delle opzioni seguenti per specificare il percorso dell'identità client nel certificato client. Quando il client tenta di connettersi al servizio, il servizio trova l'identificazione del client da questo campo certificato e lo corrisponde al nome di autenticazione client per autenticare il client.

Sono supportati cinque campi certificato:

  • Oggetto corrisponde al nome dell'autenticazione
  • Dns corrisponde al nome dell'autenticazione
  • URI corrisponde al nome dell'autenticazione
  • IP corrisponde al nome dell'autenticazione
  • Indirizzo di posta elettronica corrisponde al nome dell'autenticazione

Usare l'opzione "Thumbprint Match" durante l'uso del certificato autofirmato per autenticare il client.

Nota

  • clientCertificateAuthentication è sempre necessario con un valore valido validationScheme.
  • authenticationName non è obbligatorio, ma dopo la prima richiesta di creazione, il valore authenticatioName viene predefinito come nome ARM e non può essere aggiornato.
  • authenticationName non può essere aggiornato.
  • Se validationScheme è diverso da ThumbprintMatch, non è possibile specificare l'elenco allowedThumbprints.
  • L'elenco allowedThumbprints può essere fornito solo e deve essere fornito se validationScheme è ThumbprintMatch con un'identificazione personale atleast.
  • allowedThumbprints può contenere solo un massimo di 2 identificazioni personali.
  • I valori validationScheme consentiti sono SubjectMatchesAuthenticationName, DnsMatchesAuthenticationName, UriMatchesAuthenticationName, IpMatchesAuthenticationName, EmailMatchesAuthenticationName, ThumbprintMatch
  • L'uso dell'identificazione personale con consente il riutilizzo dello stesso certificato tra più client. Per altri tipi di convalida, il nome dell'autenticazione deve trovarsi nel campo scelto del certificato client.

Attributi client

Gli attributi client sono un set di coppie chiave-valore definite dall'utente o tag che forniscono informazioni sul client.

Questi attributi client possono essere usati per creare i gruppi client. Ad esempio, è possibile raggruppare tutti i veicoli di tipo semicarri in un unico gruppo e tutti i veicoli di tipo pickup-truck in un altro.

Questi attributi vengono usati nelle query del gruppo client per filtrare un set di client. Gli attributi possono descrivere le caratteristiche fisiche o funzionali del client. L'attributo tipico potrebbe essere "tipo" del client.

Ecco un esempio:

  • Tipo: i valori possono essere "sensore" o "termostato" o "veicolo"

Ecco uno schema di esempio per il client con definizione di attributo:

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

Durante la configurazione degli attributi client, considerare gli argomenti a cui i client pubblicano (sottoscrivono). Pensando indietro dagli argomenti ai client, è possibile identificare le comunità tra i ruoli client in modo più semplice e definire gli attributi client per semplificare il raggruppamento dei client.

Nota

  • Le chiavi dell'attributo client devono essere univoce nel client. Le chiavi non possono essere ripetute.
  • I valori degli attributi client possono essere di stringtipo o integer array of strings .
  • Le dimensioni totali degli attributi client per un client devono essere sempre inferiori a 4 KB.
  • Il nome dell'attributo client (chiave) può contenere solo caratteri alfanumerici e caratteri di sottolineatura(_).

Contratti di esempio

Esempio per l'autenticazione client basata sulla catena di certificati

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

Esempio per l'autenticazione client basata sull'identificazione personale del certificato autofirmato

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

configurazione di portale di Azure

Per creare un client, seguire questa procedura:

  1. Passare allo spazio dei nomi nel portale di Azure

  2. In Client selezionare + Client.

    Screenshot of adding a client.

  3. Scegliere lo schema di convalida dell'autenticazione del certificato client. Per altre informazioni sulla configurazione dell'autenticazione client, vedere l'articolo autenticazione client.

  • Aggiungere attributi client.

    Screenshot of client configuration.

  1. Selezionare Crea.

Configurazione dell'interfaccia della riga di comando di Azure

Usare i comandi seguenti per creare/mostrare/eliminare un client

Creare un client

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

Ottenere il client

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

Eliminare il client

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

Passaggi successivi

  • Informazioni sull'autenticazione client