Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
In dit artikel wordt beschreven hoe u verifieert met Azure Event Grid-naamruimten met behulp van een webhook of een Azure-functie.
Met webhookverificatie kunnen externe HTTP-eindpunten (webhooks of functies) verbindingen van Message Queuing Telemetry Transport (MQTT) dynamisch verifiëren. Deze methode maakt gebruik van JSON-webtokenvalidatie van Microsoft Entra ID om beveiligde toegang te garanderen.
Wanneer een client verbinding probeert te maken, roept de broker een door de gebruiker gedefinieerd HTTP-eindpunt aan waarmee referenties worden gevalideerd, zoals Shared Access Signature-tokens, gebruikersnamen en wachtwoorden, of zelfs controles op de certificaatintrekkingslijst worden uitgevoerd. De webhook evalueert de aanvraag en retourneert een beslissing om de verbinding toe te staan of te weigeren, samen met optionele metagegevens voor fijnmazige autorisatie. Deze aanpak ondersteunt flexibel en gecentraliseerd verificatiebeleid voor diverse apparaatvloten en gebruiksvoorbeelden.
Vereiste voorwaarden
- Een Event Grid-naamruimte met een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit.
 - Een externe webhook of Azure-functie.
 - Toegang verleend aan de beheerde identiteit van de Event Grid-naamruimte voor de Azure-functie of -webhook.
 
Stappen op hoog niveau
Volg deze stappen om aangepaste webhookverificatie voor naamruimten te gebruiken:
- Maak een naamruimte en configureer de bijbehorende subresources.
 - Schakel een beheerde identiteit in voor uw Event Grid-naamruimte.
 - Verdeel de beheerde identiteit toegang tot uw Azure-functie of -webhook.
 - Configureer aangepaste webhookinstellingen in uw Event Grid-naamruimte.
 - Verbind je clients met de Event Grid-naamruimte en laat ze zich authenticeren via de webhook of functie.
 
Een naamruimte maken en de bijbehorende subresources configureren
Als u een naamruimte wilt maken en de bijbehorende subresources wilt configureren, volgt u de instructies in quickstart: Publiceren en abonneren op MQTT-berichten in een Event Grid-naamruimte met de Azure-portal. Sla de stappen voor het maken van een certificaat en een client over omdat de clientidentiteiten afkomstig zijn van het opgegeven token. Clientkenmerken zijn gebaseerd op de aangepaste claims in het clienttoken. De clientkenmerken worden gebruikt in de clientgroepquery, onderwerpsjabloonvariabelen en routeringsverrijkingsconfiguratie.
Een beheerde identiteit inschakelen in uw Event Grid-naamruimte
Als u een door het systeem toegewezen beheerde identiteit wilt inschakelen in uw Event Grid-naamruimte, gebruikt u de volgende opdracht:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}" 
Zie Beheerde identiteiten inschakelen voor een Event Grid-naamruimte voor informatie over het configureren van systeem- en door de gebruiker toegewezen identiteiten met behulp van Azure Portal.
De beheerde identiteit toegang verlenen tot een functie of webhook
Geef de beheerde identiteit van uw Event Grid-naamruimte de juiste toegang tot de Azure-functie of webhook.
Volg de volgende stappen om aangepaste verificatie in te stellen voor een Azure-functie.
Een Microsoft Entra-app maken
Noteer op de pagina Overzicht van de app de waarde van de toepassings-id (client ).
              
              
            
Selecteer een API beschikbaar maken in het linkermenu. Selecteer Toevoegen naast de URI van de toepassings-id.
Noteer de URI-waarde van de toepassings-id in het deelvenster URI voor toepassings-id bewerken en selecteer Opslaan.
Verificatie instellen voor een Azure-functie
Als u een eenvoudige Azure-functie hebt gemaakt vanuit Azure Portal, stelt u verificatie in en valideert u het Microsoft Entra ID-token dat is gemaakt met behulp van een beheerde identiteit.
Ga naar uw Azure Functions-app.
Selecteer verificatie in het linkermenu en selecteer vervolgens Id-provider toevoegen.
Selecteer Microsoft in de vervolgkeuzelijst op de pagina Een id-provider toevoegen voor Id-provider.
Geef in de sectie App-registratie waarden op voor de volgende eigenschappen:
Voor toegestane tokendoelpunten voegt u de URI-waarde van de toepassings-id toe van de Microsoft Entra-app die u eerder hebt genoteerd.
Selecteer in de sectie Aanvullende controles voor het ontwikkelen van clienttoepassingenaanvragen van specifieke clienttoepassingen toestaan.
Voer in het deelvenster Toegestane clienttoepassingen de client-id in van de door het systeem toegewezen beheerde identiteit die wordt gebruikt om het token te genereren. U vindt deze id in de bedrijfs-app van de Microsoft Entra ID-resource.
Kies andere instellingen op basis van uw specifieke vereisten en selecteer vervolgens Toevoegen.
Genereer en gebruik nu het Microsoft Entra ID-token.
- Genereer een Microsoft Entra ID-token met behulp van de beheerde identiteit met de URI van de toepassings-id als de resources.
 - Gebruik dit token om de Azure-functie aan te roepen door deze op te halen in de aanvraagheader.
 
Aangepaste verificatie-instellingen voor webhook configureren in uw Event Grid-naamruimte
Configureer aangepaste webhookverificatie-instellingen in uw Event Grid-naamruimte met behulp van De Azure-portal en de Azure CLI. U maakt eerst de naamruimte en werkt deze vervolgens bij.
De Azure-portal gebruiken
Ga naar uw Event Grid-naamruimte in Azure Portal.
Selecteer Configuratie in het linkermenu op de pagina Event Grid-naamruimte.
Geef in de sectie Aangepaste webhookverificatie waarden op voor de volgende eigenschappen:
- Type beheerde identiteit: selecteer Gebruiker toegewezen.
 - Webhook-URL: Voer de waarde in van het URL-eindpunt waar de Event Grid-service geverifieerde webhookaanvragen verzendt met behulp van de opgegeven beheerde identiteit.
 - Token doelgroep-URI: Voer de waarde in van de Microsoft Entra-toepassings-id of URI om het toegangstoken op te halen dat moet worden opgenomen als het bearer-token in bezorgingsaanvragen.
 - Tenant-id van Microsoft Entra-id: voer de waarde in van de Microsoft Entra-tenant-id die wordt gebruikt om het Bearer-token te verkrijgen voor geverifieerde webhooklevering.
 
Selecteer de optie Toepassen.
De Azure CLI gebruiken
Gebruik de volgende opdracht om uw naamruimte bij te werken met de aangepaste configuratie voor webhookverificatie:
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" 
Vervang <NAMESPACE_NAME> en <RESOURCE_GROUP_NAME> door uw werkelijke waarden. Vul de tijdelijke aanduidingen in het abonnement, de resourcegroep, de identiteit, de app-id, de URL en de tenant-id in. Om de prestaties en betrouwbaarheid van verificatie op basis van webhook voor de Event Grid MQTT-broker te verbeteren, raden we u ten zeerste aan HTTP/2-ondersteuning in te schakelen voor uw webhookeindpunt.
Webhook API-details
Headers aanvragen
Autorisatie: Bearer-token
Het token is een Microsoft Entra-token voor de beheerde identiteit die is geconfigureerd om de webhook aan te roepen.
Nettolading aanvragen
{
    "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>"
}
Beschrijvingen van payloadvelden
| Veld | Vereist/optioneel | Beschrijving | 
|---|---|---|
clientId | 
Verplicht | Client-id van MQTT CONNECT-pakket. | 
userName | 
Optioneel | Gebruikersnaam van MQTT CONNECT-pakket. | 
password | 
Optioneel | Wachtwoord van MQTT CONNECT-pakket in Base64-codering. | 
authenticationMethod | 
Optioneel | Verificatiemethode van MQTT CONNECT-pakket (alleen MQTT5). | 
authenticationData | 
Optioneel | Verificatiegegevens van MQTT CONNECT-pakket in Base64-codering (alleen MQTT5). | 
clientCertificate | 
Optioneel | Een clientcertificaat in PEM-indeling. | 
clientCertificateChain | 
Optioneel | Andere certificaten die door de client zijn geleverd om de keten van het clientcertificaat naar het certificaat van de certificeringsinstantie te bouwen. | 
userProperties | 
Optioneel | Gebruikerseigenschappen van CONNECT-pakket (alleen MQTT5). | 
Antwoordlading
Succesvolle respons
HTTP/1.1 200 OK 
Content-Type: application/json 
{ 
    "decision": "allow", 
    "clientAuthenticationName": "<string>", 
    "attributes": { 
        "attr": "<int/string/array_of_strings>", 
        ... 
    }, 
    "expiration": "<unix time format>" 
} 
Antwoord geweigerd
HTTP/1.1 400 Bad Request 
Content-Type: application/json 
{ 
    "decision": "deny", 
    "errorReason": "<string>" 
}
Beschrijvingen van antwoordvelden
| Veld | Beschrijving | 
|---|---|
              decision (vereist) | 
Verificatiebeslissing is of allowdeny. | 
clientAuthenticationName | 
Naam van clientverificatie (identiteitsnaam). (Vereist wanneer decision deze is ingesteld op allow.) | 
attributes | 
Woordenlijst met kenmerken. De sleutel is de kenmerknaam en de waarde is een int/string/matrix. (Optioneel wanneer decision deze is ingesteld op allow.) | 
expiration | 
Vervaldatum in Unix-tijdnotatie. (Optioneel wanneer decision deze is ingesteld op allow.) | 
errorReason | 
Foutbericht als decision dit is ingesteld op deny. Deze fout wordt geregistreerd. (Optioneel wanneer decision deze is ingesteld op deny.) | 
Voorbeelden van ondersteunde kenmerktypen
"num_attr_pos": 1, 
"num_attr_neg": -1, 
"str_attr": "str_value", 
"str_list_attr": [ 
    "str_value_1", 
    "str_value_2" 
] 
Alle juiste gegevenstypen (het aantal dat past <int32/string/array_of_strings>) worden gebruikt als kenmerken. In het voorbeeld num_attr_poshebben, num_attr_neg, en str_attrstr_list_attr claims de juiste gegevenstypen en worden ze gebruikt als kenmerken.