Kommentar
Å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.
När du skapar en Event Grid-eventprenumeration för en webhook-endpoint måste Event Grid bekräfta att du äger endpointen innan den levererar händelser. Om valideringshandshake inte slutförs misslyckas prenumerationsskapandet. Den här artikeln hjälper dig att identifiera varför handslaget misslyckas och hur du kan åtgärda det.
Symptoms
När du skapar en händelseprenumeration ser du ett felmeddelande liknande följande text:
The attempt to validate the provided endpoint https://your-endpoint-here failed. For more details, visit https://aka.ms/esvalidation
Felet indikerar att Event Grid inte kunde slutföra valideringshandshake med din webhook-endpoint, så Event Grid skapar inte prenumerationen.
Cause
Event Grid kräver att du bevisar äganderätt till en webhook-endpoint innan den börjar leverera händelser. Detta krav förhindrar att en illvillig användare överväldigar en endpoint med händelser. Valideringsfelet uppstår när handshake mellan Event Grid och din endpoint inte lyckas. Vanliga orsaker är bland annat:
- Din slutpunkt skickar inte tillbaka valideringskoden för den synkrona handskakningen, eller returnerar inte
200 OKför den asynkrona (manuella) handskakningen. - En brandvägg, Azure Application Gateway eller web application firewall (WAF) framför din endpoint blockerar valideringsförfrågan och returnerar
403 (Forbidden). - Din endpoint använder CloudEvents v1.0-schemat men svarar inte på HTTP OPTIONS-valideringsförfrågan.
- Din endpoint använder ett självsignerat certifikat, vilket Event Grid inte stödjer för validering.
För en fullständig beskrivning av valideringshandshake, se Endpoint validation with Event Grid event schema och Endpoint validation by using CloudEvents schema.
Lösning 1: Testa valideringshandshake för en Event Grid-schemaprenumeration
Skicka ett exempel på SubscriptionValidationEvent till din webhook och bekräfta svaret:
- Skicka en HTTP POST-förfrågan till din webhook-URL med en exempelförfrågan
SubscriptionValidationEventgenom att använda curl eller ett liknande verktyg. - Om din webhook implementerar den synkrona handskakningen, kontrollera att din webhook returnerar svaret
validationCode. Du måste returnera enHTTP 200 OKstatuskod. Event Grid känner inte igenHTTP 202 Acceptedsom ett giltigt svar, och förfrågan måste slutföras inom 30 sekunder. - Om din webhook implementerar den asynkrona (manuella) handskakningen, kontrollera att din slutpunkt returnerar
200 OK. Slutför sedan handslaget genom att skicka en GET-förfrågan tillvalidationUrli händelsedata inom 10 minuter. Validerings-URL:en använder port 553, så uppdatera dina brandväggsregler om den porten är blockerad.
Här är ett exempel SubscriptionValidationEvent på JSON-payload som du kan skicka:
[
{
"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är är det förväntade lyckade svaret:
{
"validationResponse": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
}
Här är det motsvarande curl-kommandot för att validera en webhook-prenumeration som använder Event Grid-händelseschemat:
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}
För att lära dig mer, se Endpoint validation with Event Grid event schema.
Lösning 2: Ta bort brandväggs- eller WAF-regler som blockerar valideringsförfrågan
Om din webhook returnerar 403 (Forbidden), kontrollera om den ligger bakom Azure Application Gateway eller en webbapplikationsbrandvägg. Om det är så, inaktivera följande brandväggsregler och gör HTTP POST igen:
- 920300 (Begäran saknar ett accepthuvud)
- 942430 (Begränsad SQL-teckenavvikelsedetektering (args): antal specialtecken överskridna (12))
- 920230 (flera URL-kodningar har identifierats)
- 942130 (SQL-injektionsattack: SQL-tautologi upptäckt)
- 931130 (Möjlig fjärrfilinkludering (RFI)-attack: referens eller länk utanför domänen)
Lösning 3: Validera ett CloudEvents-schemaabonnemang
Om din prenumeration använder CloudEvents v1.0-schemat använder Event Grid CloudEvents missbruksskydd istället för prenumerationsvalideringseventet. Din endpoint måste hantera metoden HTTP OPTIONS och returnera WebHook-Allowed-Origin-huvudet. För att lära dig mer, se Endpoint validation genom att använda CloudEvents-schemat.
Relaterat innehåll
Om du behöver mer hjälp, ställ din fråga i