Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come eseguire l'autenticazione con gli spazi dei nomi di Griglia di eventi di Azure usando un webhook o una funzione di Azure.
L'autenticazione webhook consente agli endpoint HTTP esterni (webhook o funzioni) di autenticare dinamicamente le connessioni MQTT (Message Queuing Telemetry Transport). Questo metodo usa la convalida del token Web JSON di Microsoft Entra ID per garantire l'accesso sicuro.
Quando un client tenta di connettersi, il broker richiama un endpoint HTTP definito dall'utente che convalida le credenziali, ad esempio token di firma di accesso condiviso (SAS), nomi utente e password o esegue anche controlli dell'elenco di revoche di certificati (CRL). Il webhook valuta la richiesta e restituisce una decisione per consentire o negare la connessione, insieme ai metadati facoltativi per l'autorizzazione con granularità fine. Questo approccio supporta criteri di autenticazione flessibili e centralizzati in diverse flotta di dispositivi e casi d'uso.
Prerequisiti
- Uno spazio dei nomi di Griglia di eventi con un'identità gestita assegnata dal sistema o assegnata dall'utente.
- Un webhook esterno o una funzione di Azure.
- Accesso concesso all'identità gestita dello spazio dei nomi di Griglia di eventi alla funzione di Azure o al webhook.
Fasi ad alto livello
Per usare l'autenticazione webhook personalizzata per i namespace, seguire questa procedura:
- Creare uno spazio dei nomi e configurare le relative sotto-risorse.
- Abilitare un'identità gestita nello spazio dei nomi di Griglia di eventi.
- Concedere all'identità gestita l'accesso alla funzione di Azure o al webhook.
- Configurare impostazioni webhook personalizzate nello spazio dei nomi di Griglia di eventi.
- Connettere i clienti allo spazio dei nomi di Griglia di eventi e ottenere l'autenticazione tramite il webhook o la funzione.
Creare uno spazio dei nomi e configurare le relative sotto-risorse
Per creare uno spazio dei nomi e configurare le relative risorse secondarie, seguire le istruzioni riportate in Avvio rapido: Pubblicare e sottoscrivere messaggi MQTT in uno spazio dei nomi di Griglia di eventi con il portale di Azure. Ignorare i passaggi per creare un certificato e un client perché le identità client provengono dal token specificato. Gli attributi client sono basati sulle attestazioni personalizzate nel token client. Gli attributi client vengono usati nella query del gruppo client, nelle variabili del modello di argomento e nella configurazione dell'arricchimento del routing.
Abilitare un'identità gestita nello spazio dei nomi di Griglia di eventi
Per abilitare un'identità gestita assegnata dal sistema nello spazio dei nomi di Griglia di eventi, usare il comando seguente:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Per informazioni su come configurare le identità assegnate dal sistema e dall'utente tramite il portale di Azure, vedere Abilitare l'identità gestita per uno spazio dei nomi di Griglia di eventi.
Concedere all'identità gestita l'accesso appropriato a una funzione o a un webhook
Concedi all'identità gestita del namespace di Event Grid l'accesso appropriato alla funzione di Azure di destinazione o al webhook.
Per configurare l'autenticazione personalizzata per una funzione di Azure, seguire i passaggi successivi.
Creare un'app Microsoft Entra
Nella pagina Panoramica dell'app prendere nota del valore ID applicazione (client).
Nel menu a sinistra, selezionare Esponi un'API. Accanto a URI dell'ID applicazione selezionare Aggiungi.
Prendere nota del valore URI ID applicazione nel riquadro Modifica URI ID applicazione e quindi selezionare Salva.
Configurare l'autenticazione per una funzione di Azure
Se si dispone di una funzione di Azure di base creata dal portale di Azure, configurare l'autenticazione e convalidare il token ID Microsoft Entra creato usando un'identità gestita.
Passare all'app Funzioni di Azure.
Nel menu a sinistra selezionare Autenticazione e quindi Aggiungi provider di identità.
Nella pagina Aggiungi un provider di identità, per Profider di identità selezionare Microsoft nell'elenco a discesa.
Nella sezione Registrazione app, specificare i valori per le proprietà seguenti:
Per Gruppi di destinatari token consentiti, aggiungere il valore URI ID applicazione dell'app Microsoft Entra annotato in precedenza.
Nella sezione Controlli aggiuntivi, per Sviluppo di applicazioni client selezionare Consenti richieste da applicazioni client specifiche.
Nel riquadro Applicazioni client consentite, immettere l'ID client dell'identità gestita assegnata dal sistema usata per generare il token. È possibile trovare questo ID nell'app aziendale della risorsa Microsoft Entra ID.
Scegliere altre impostazioni in base ai requisiti specifici e quindi selezionare Aggiungi.
A questo momento, generare e usare il token ID Microsoft Entra.
- Generare un token Microsoft Entra ID usando l'identità gestita con l'URI ID applicazione come risorse.
- Usare questo token per richiamare la funzione di Azure includendola nell'intestazione della richiesta.
Configurare le impostazioni di autenticazione webhook personalizzate nel namespace Event Grid
Configurare impostazioni di autenticazione webhook personalizzate nello spazio dei nomi di Griglia di eventi usando il portale di Azure e l'interfaccia della riga di comando di Azure. Creare prima lo spazio dei nomi e quindi aggiornarlo.
Usare il portale di Azure
Passare allo spazio dei nomi di Griglia di eventi nel portale di Azure.
Nella pagina Spazio dei nomi Griglia di eventi, selezionare Configurazione nel menu a sinistra.
Nella sezione Autenticazione webhook personalizzata, specificare i valori per le proprietà seguenti:
- Tipo di identità gestita: selezionare Assegnata dall'utente.
- URL webhook: immettere il valore dell'endpoint URL in cui il servizio Griglia di eventi invia richieste webhook autenticate usando l'identità gestita specificata.
- URI gruppo di destinatari token: immettere l'URI o il valore dell'ID applicazione Microsoft Entra per ottenere il token di accesso da includere come token di connessione nelle richieste di recapito.
- ID tenant Microsoft Entra ID: immettere il valore dell'ID tenant Microsoft Entra usato per acquisire il token di connessione per il recapito del webhook autenticato.
Selezionare Applica.
Usare l'interfaccia della riga di comando di Azure
Per aggiornare lo spazio dei nomi con la configurazione di autenticazione webhook personalizzata, usare il comando seguente:
az eventgrid namespace update \
--resource-group <resource-group-name> \
--name <namespace-name> \
--api-version 2025-04-01-preview \
--identity-type UserAssigned \
--identity-user-assigned-identities "/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX={}" \
--set properties.isZoneRedundant=true \
properties.topicSpacesConfiguration.state=Enabled \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.type=UserAssigned \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.userAssignedIdentity="/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.endpointUrl="https://XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryApplicationIdOrUri="api://XXXXXXXXXXX/.default" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryTenantId="XXXXXXXXXXX"
Sostituire <NAMESPACE_NAME> e <RESOURCE_GROUP_NAME> con i valori effettivi. Compilare i segnaposto nell'abbonamento, nel gruppo di risorse, nell'identità, nell'ID app, nell'URL e nell'ID tenant. Per migliorare le prestazioni e l'affidabilità dell'autenticazione basata su webhook per il broker MQTT di Griglia di eventi, si consiglia vivamente di abilitare il supporto HTTP/2 per l'endpoint del webhook.
Dettagli dell'API webhook
Intestazioni della richiesta
Autorizzazione: token di connessione
Il token è un token Microsoft Entra per l'identità gestita configurata per chiamare il webhook.
Payload della richiesta
{
"clientId": "<string>",
"userName": "<string>",
"password": "<base64 encoded bytes>",
"authenticationMethod": "<string>",
"authenticationData": "<base64 encoded bytes>",
"clientCertificate": "<certificate in PEM format>",
"clientCertificateChain": "<certificates from chain in PEM format>"
}
Descrizioni dei campi del payload
| Campo | Obbligatorio/Facoltativo | Descrizione |
|---|---|---|
clientId |
Obbligatorio | ID client del pacchetto MQTT CONNECT. |
userName |
Opzionale | Nome utente del pacchetto MQTT CONNECT. |
password |
Opzionale | Password dal pacchetto MQTT CONNECT nella codifica Base64. |
authenticationMethod |
Opzionale | Metodo di autenticazione dal pacchetto MQTT CONNECT (solo MQTT5). |
authenticationData |
Opzionale | Dati di autenticazione del pacchetto MQTT CONNECT nella codifica Base64 (solo MQTT5). |
clientCertificate |
Opzionale | Certificato client in formato PEM. |
clientCertificateChain |
Opzionale | Altri certificati forniti dal client necessari per compilare la catena dal certificato client al certificato dell'autorità di certificazione. |
userProperties |
Opzionale | Proprietà utente del pacchetto CONNECT (solo MQTT5). |
Carico della risposta
Risposta riuscita
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
Risposta negata
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Descrizioni dei campi di risposta
| Campo | Descrizione |
|---|---|
decision (obbligatorio) |
La decisione di autenticazione è allow o deny. |
clientAuthenticationName |
Nome dell'autenticazione del client (nome identità) Obbligatorio quando decision è impostato su allow. |
attributes |
Dizionario con attributi. La chiave è il nome dell'attributo e il valore è int/string/array. Facoltativo quando decision è impostato su allow. |
expiration |
Data di scadenza in formato ora Unix. Facoltativo quando decision è impostato su allow. |
errorReason |
Messaggio di errore se decision è impostato su deny. Questo errore viene registrato. Facoltativo quando decision è impostato su deny. |
Esempi di tipi di attributo supportati
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
Tutti i tipi di dati corretti (numero adatto a <int32/string/array_of_strings>) vengono usati come attributi. Nell'esempio, le attestazioni num_attr_pos, num_attr_neg, str_attr e str_list_attr hanno tipi di dati corretti e vengono usate come attributi.