Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du autentiserar med Azure Event Grid-namnområden med hjälp av en webhook eller en Azure-funktion.
Webhook-autentisering tillåter externa HTTP-slutpunkter (webhooks eller funktioner) för att autentisera MQTT-anslutningar (Message Queuing Telemetry Transport) dynamiskt. Den här metoden använder Microsoft Entra ID JSON Web Token-validering för att säkerställa säker åtkomst.
När en klient försöker ansluta anropar koordinatorn en användardefinierad HTTP-slutpunkt som validerar autentiseringsuppgifter, till exempel token för signatur för delad åtkomst, användarnamn och lösenord, eller till och med utför kontroller av listan över återkallade certifikat. Webhooken utvärderar begäran och returnerar ett beslut om att tillåta eller neka anslutningen, tillsammans med valfria metadata för detaljerad auktorisering. Den här metoden stöder flexibla och centraliserade autentiseringsprinciper för olika enhetsflottor och användningsfall.
Förutsättningar
- Ett Event Grid-namnområde med antingen en systemtilldelad eller användartilldelad hanterad identitet.
- En extern webhook eller Azure-funktion.
- Åtkomst som beviljats till Event Grid-namnområdets hanterade identitet till Azure-funktionen eller webhooken.
Steg på hög nivå
Följ dessa steg om du vill använda anpassad webhook-autentisering för namnområden:
- Skapa ett namnrymd och konfigurera dess delresurser.
- Aktivera en hanterad identitet i Event Grid-namnområdet.
- Ge den hanterade identiteten åtkomst till din Azure-funktion eller webhook.
- Konfigurera anpassade webhook-inställningar i Event Grid-namnområdet.
- Anslut dina klienter till Event Grid-namnområdet och autentiseras via webhooken eller funktionen.
Skapa ett namespace och konfigurera dess underresurser.
Om du vill skapa ett namnområde och konfigurera dess underresurser följer du anvisningarna i Snabbstart: Publicera och prenumerera på MQTT-meddelanden i ett Event Grid-namnområde med Azure-portalen. Hoppa över stegen för att skapa ett certifikat och en klient eftersom klientidentiteterna kommer från den angivna token. Klientegenskaper är baserade på de anpassade anspråken i klienttoken. Klientattributen används i klientgruppsförfrågan, ämnesmallvariabler och konfigurering av routningförbättringar.
Aktivera en hanterad identitet i Event Grid-namnområdet
Om du vill aktivera en systemtilldelad hanterad identitet i Event Grid-namnområdet använder du följande kommando:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Information om hur du konfigurerar system- och användartilldelade identiteter med hjälp av Azure-portalen finns i Aktivera hanterad identitet för ett Event Grid-namnområde.
Bevilja den hanterade identiteten lämplig åtkomst till en funktion eller webhook
Ge den hanterade identiteten för ditt Event Grid-namnområde rätt åtkomst till Azure-målfunktionen eller webhooken.
Följ nästa steg för att konfigurera anpassad autentisering för en Azure-funktion.
Skapa en Microsoft Entra-app
På sidan Översikt i appen antecknar du ID-värdet för program (klient ).
På den vänstra menyn väljer du Exponera ett API. Bredvid Program-ID-URI väljer du Lägg till.
Anteckna URI-värdet för program-ID i fönstret Redigera program-ID URI och välj sedan Spara.
Konfigurera autentisering för en Azure-funktion
Om du har skapat en grundläggande Azure-funktion från Azure-portalen konfigurerar du autentisering och verifierar den Microsoft Entra-ID-token som skapades med hjälp av en hanterad identitet.
Gå till din Azure Functions-app.
På den vänstra menyn väljer du Autentisering och sedan Lägg till identitetsprovider.
På sidan Lägg till en identitetsprovider väljer du Microsoft i listrutan för Identitetsprovider.
I avsnittet Appregistrering anger du värden för följande egenskaper:
För Tillåtna token-målgrupper lägger du till URI-värdet för program-ID för Microsoft Entra-appen som du antecknade tidigare.
I avsnittet Ytterligare kontroller väljer du Tillåt begäranden från specifika klientprogram för utveckling av klientprogram.
I fönstret Tillåtna klientprogram anger du klient-ID för den systemtilldelade hanterade identitet som används för att generera token. Du hittar det här ID:t i företagsappen för Microsoft Entra-ID-resursen.
Välj andra inställningar baserat på dina specifika krav och välj sedan Lägg till.
Generera och använd nu Microsoft Entra ID-token.
- Generera en Microsoft Entra-ID-token med hjälp av den hanterade identiteten med program-ID:ts URI som resurser.
- Använd den här token för att anropa Azure-funktionen genom att inkludera den i begärandehuvudet.
Konfigurera anpassade webhook-autentiseringsinställningar i Event Grid-namnområdet
Konfigurera anpassade webhook-autentiseringsinställningar på Event Grid-namnområdet med hjälp av Azure-portalen och Azure CLI. Du skapar namnområdet först och uppdaterar det sedan.
Använda Azure Portal
Gå till Event Grid-namnområdet i Azure-portalen.
På sidan Event Grid Namespace, välj Konfiguration i menyn till vänster.
I avsnittet Anpassad Webhook-autentisering anger du värden för följande egenskaper:
- Hanterad identitetstyp: Välj Användartilldelad.
- Webhook-URL: Ange värdet för DEN URL-slutpunkt där Event Grid-tjänsten skickar autentiserade webhooksbegäranden med den angivna hanterade identiteten.
- URI för tokenpublik: Ange värdet för Microsoft Entra-program-ID:t eller URI:n för att få åtkomsttoken som ska inkluderas som ägartoken i leveransbegäranden.
- Klient-ID för Microsoft Entra: Ange värdet för det Microsoft Entra-klient-ID som användes för att hämta ägartoken för autentiserad webhookleverans.
Välj Använd.
Använda Azure CLI
Om du vill uppdatera namnområdet med den anpassade webhook-autentiseringskonfigurationen använder du följande kommando:
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"
Ersätt <NAMESPACE_NAME> och <RESOURCE_GROUP_NAME> med dina faktiska värden. Fyll i platshållarna i prenumerationen, resursgruppen, identiteten, app-ID:t, URL:en och klientorganisations-ID:t. För att förbättra prestanda och tillförlitlighet för webhookbaserad autentisering för Event Grid MQTT-koordinatorn rekommenderar vi starkt att du aktiverar HTTP/2-stöd för webhookens slutpunkt.
Webhook API-information
Förfrågningsrubriker
Auktorisering: Ägartoken
Token är en Microsoft Entra-token för den hanterade identitet som har konfigurerats för att anropa webhooken.
Begär nyttolast
{
"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>"
}
Beskrivningar av fält för nyttolast
| Fält | Obligatoriskt/valfritt | Beskrivning |
|---|---|---|
clientId |
Krävs | Klient-ID från MQTT CONNECT-paket. |
userName |
Valfritt | Användarnamn från MQTT CONNECT-paket. |
password |
Valfritt | Lösenord från MQTT CONNECT-paket i Base64-kodning. |
authenticationMethod |
Valfritt | Autentiseringsmetod från MQTT CONNECT-paket (endast MQTT5). |
authenticationData |
Valfritt | Autentiseringsdata från MQTT CONNECT-paket i Base64-kodning (endast MQTT5). |
clientCertificate |
Valfritt | Klientcertifikat i PEM-format. |
clientCertificateChain |
Valfritt | Andra certifikat som tillhandahålls av klienten som krävs för att skapa kedjan från klientcertifikatet till certifikatutfärdarcertifikatet. |
userProperties |
Valfritt | Användaregenskaper från CONNECT-paket (endast MQTT5). |
Svarslast
Lyckat svar
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
Nekat svar
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Beskrivningar av svarsfält
| Fält | Beskrivning |
|---|---|
decision (krävs) |
Autentiseringsbeslutet är antingen allow eller deny. |
clientAuthenticationName |
Klientautentiseringsnamn (identitetsnamn). (Krävs när decision är inställt på allow.) |
attributes |
Ordlista med attribut. Nyckeln är attributnamnet och värdet är en int/string/array. (Valfritt när decision är inställt på allow.) |
expiration |
Förfallodatum i Unix-tidsformat. (Valfritt när decision är inställt på allow.) |
errorReason |
Felmeddelande om decision är inställt på deny. Det här felet loggas. (Valfritt när decision är inställt på deny.) |
Exempel på attributtyper som stöds
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
Alla rätt datatyper (nummer som passar <int32/string/array_of_strings>) används som attribut. I exemplet num_attr_poshar , num_attr_neg, str_attroch str_list_attr anspråk rätt datatyper och används som attribut.