Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer je een Event Grid-eventabonnement aanmaakt voor een webhook-endpoint, moet Event Grid bevestigen dat je eigenaar bent van het endpoint voordat het events levert. Als die validatiehanddruk niet wordt voltooid, mislukt het aanmaken van het abonnement. Dit artikel helpt je te achterhalen waarom de handdruk faalt en hoe je dit kunt oplossen.
Symptomen
Wanneer je een evenementenabonnement aanmaakt, zie je een foutmelding die lijkt op de volgende tekst:
The attempt to validate the provided endpoint https://your-endpoint-here failed. For more details, visit https://aka.ms/esvalidation
De fout geeft aan dat Event Grid de validatiehandshake niet met je webhook-endpoint kon voltooien, dus maakt Event Grid het abonnement niet aan.
Cause
Event Grid vereist dat je eigendom van een webhook-endpoint bewijst voordat het begint met het leveren van events. Deze eis voorkomt dat een kwaadwillende gebruiker een eindpunt overspoelt met gebeurtenissen. De validatiefout verschijnt wanneer de handshake tussen Event Grid en je endpoint niet slaagt. Veelvoorkomende oorzaken zijn onder andere:
- Je eindpunt stuurt de validatiecode voor de synchrone handshake niet terug, of retourneert
200 OKniet voor de asynchrone (handmatige) handshake. - Een firewall, Azure Application Gateway of webapplicatiefirewall (WAF) voor je endpoint blokkeert het validatieverzoek en keert terug
403 (Forbidden). - Je endpoint gebruikt het CloudEvents v1.0-schema, maar reageert niet op het HTTP OPTIONS-validatieverzoek.
- Je endpoint gebruikt een zelfondertekend certificaat, dat Event Grid niet ondersteunt voor validatie.
Voor een volledige beschrijving van de validatiehandshake, zie Endpoint validatie met Event Grid event schema en Endpoint validatie met behulp van het CloudEvents-schema.
Oplossing 1: Test de validatiehanddruk voor een Event Grid-schema-abonnement
Stuur een voorbeeld van SubscriptionValidationEvent naar je webhook en bevestig het antwoord:
- Stuur een HTTP POST-verzoek naar je webhook-URL met een voorbeeld van een aanvraagbody
SubscriptionValidationEventmet curl of een vergelijkbaar hulpprogramma. - Als je webhook de synchrone handshake toepast, controleer dan of je webhook de
validationCodein het antwoord teruggeeft. Je moet eenHTTP 200 OKstatuscode teruggeven. Event Grid herkentHTTP 202 Acceptedgeen geldig antwoord en het verzoek moet binnen 30 seconden worden afgerond. - Als je webhook de asynchrone (handmatige) handdruk implementeert, controleer dan of je eindpunt
200 OKretourneert. Voltooi vervolgens de handdruk door binnen 10 minuten een GET-verzoek naar devalidationUrlin the event-data te sturen. De validatie-URL gebruikt poort 553, dus werk je firewallregels bij als die poort geblokkeerd is.
Hier is een voorbeeld SubscriptionValidationEvent van een JSON-payload die je kunt versturen:
[
{
"id": "aaaa0000-bb11-2222-33cc-444444dddddd",
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"subject": "",
"data": {
"validationCode": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
},
"eventType": "Microsoft.EventGrid.SubscriptionValidationEvent",
"eventTime": "2018-01-25T22:12:19.4556811Z",
"metadataVersion": "1",
"dataVersion": "1"
}
]
Hier is de verwachte succesvolle reactie:
{
"validationResponse": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
}
Hier is het equivalente curl-commando voor het valideren van een webhook-abonnement dat het Event Grid-gebeurtenisschema gebruikt:
curl -X POST -d '[{"id": "aaaa0000-bb11-2222-33cc-444444dddddd","topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","subject": "","data": {"validationCode": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"},"eventType": "Microsoft.EventGrid.SubscriptionValidationEvent","eventTime": "2018-01-25T22:12:19.4556811Z", "metadataVersion": "1","dataVersion": "1"}]' -H 'Content-Type: application/json' https://{your-webhook-url.com}
Voor meer informatie, zie Endpoint validation with Event Grid event schema.
Oplossing 2: Verwijder firewall- of WAF-regels die het validatieverzoek blokkeren
Als je webhook 403 (Forbidden) retourneert, controleer dan of de webhook zich achter een Azure Application Gateway of een firewall voor webtoepassingen bevindt. Als dat zo is, schakel dan de volgende firewallregels uit en voer de HTTP POST opnieuw uit:
- 920300 (Verzoek mist een Accept-header)
- 942430 (Beperkte SQL-tekenafwijkingsdetectie (args): aantal speciale tekens overschreden (12))
- 920230 (meerdere URL-codering gedetecteerd)
- 942130 (SQL-injectieaanval: SQL-tautologie gedetecteerd)
- 931130 (Mogelijke remote file inclusion-aanval (RFI): verwijzing of koppeling naar een extern domein)
Oplossing 3: Valideer een CloudEvents-schema-abonnement
Als je abonnement het CloudEvents v1.0-schema gebruikt, gebruikt Event Grid CloudEvents abuse-bescherming in plaats van het validatie-event voor het abonnement. Je endpoint moet reageren op de HTTP OPTIONS-methode en de WebHook-Allowed-Origin header teruggeven. Voor meer informatie, zie Endpoint validation met behulp van het CloudEvents-schema.
Gerelateerde inhoud
Als je meer hulp nodig hebt, stel je vraag op de