Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie ein Event Grid-Event-Abonnement für einen Webhook-Endpunkt erstellen, muss Event Grid bestätigen, dass Sie den Endpunkt besitzen, bevor Ereignisse ausgeliefert werden. Wenn dieser Validierungshandschlag nicht abgeschlossen wird, schlägt die Abonnementerstellung fehl. Dieser Artikel hilft Ihnen herauszufinden, warum der Handschlag fehlschlägt und wie Sie ihn beheben können.
Symptome
Wenn Sie ein Ereignis-Abonnement erstellen, erhalten Sie eine Fehlermeldung, die dem folgenden Text ähnelt:
The attempt to validate the provided endpoint https://your-endpoint-here failed. For more details, visit https://aka.ms/esvalidation
Der Fehler zeigt an, dass Event Grid den Validierungshandshake nicht mit deinem Webhook-Endpunkt abschließen konnte, sodass Event Grid das Abonnement nicht erstellt.
Ursache
Event Grid verlangt, dass Sie den Besitz eines Webhook-Endpunkts nachweisen, bevor er mit der Auslieferung von Ereignissen beginnt. Diese Anforderung verhindert, dass ein böswilliger Nutzer einen Endpunkt mit Ereignissen überflutet. Der Validierungsfehler tritt auf, wenn der Handshake zwischen Event Grid und deinem Endpunkt nicht erfolgreich ist. Häufige Ursachen sind:
- Dein Endpunkt gibt den Validierungscode für den synchronen Handshake nicht zurück oder liefert für den asynchronen (manuellen) Handshake nicht
200 OKzurück. - Eine Firewall, ein Azure Application Gateway oder eine Web-Anwendungs-Firewall (WAF) vor Ihrem Endpunkt blockiert die Validierungsanfrage und liefert
403 (Forbidden). - Dein Endpunkt verwendet das CloudEvents v1.0-Schema, antwortet aber nicht auf die HTTP OPTIONS-Validierungsanforderung.
- Dein Endpunkt verwendet ein selbstsigniertes Zertifikat, das Event Grid für die Validierung nicht unterstützt.
Für eine vollständige Beschreibung des Validierungshandshakes siehe Endpunkt-Validierung mit Event Grid-Ereignisschema und Endpunkt-Validierung mit CloudEvents-Schema.
Lösung 1: Teste den Validierungshandshake für ein Event Grid Schema-Abonnement
Senden Sie ein Beispiel von SubscriptionValidationEvent an Ihren Webhook und bestätigen Sie die Antwort:
- Senden Sie eine HTTP-POST-Anfrage an Ihre Webhook-URL mit einem Beispiel-Request-Body
SubscriptionValidationEventmit Curl oder einem ähnlichen Tool. - Wenn Ihr Webhook den synchronen Handshake implementiert, überprüfen Sie, dass Ihr Webhook das
validationCodein der Antwort zurückgibt. Sie müssen einen StatuscodeHTTP 200 OKzurückgeben. Event Grid erkenntHTTP 202 Acceptedkeine gültige Antwort an, und die Anfrage muss innerhalb von 30 Sekunden abgeschlossen sein. - Wenn dein Webhook den asynchronen (manuellen) Handshake implementiert, prüfe, ob dein Endpunkt
200 OKzurückgibt. Dann schließen Sie den Handshake ab, indem Sie innerhalb von 10 Minuten eine GET-Anfrage an dievalidationUrlin den Ereignisdaten senden. Die Validierungs-URL verwendet Port 553, also aktualisiere deine Firewall-Regeln, wenn dieser Port blockiert ist.
Hier ist ein Beispiel für SubscriptionValidationEvent JSON-Nutzdaten, die Sie senden können:
[
{
"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 ist die erwartete erfolgreiche Antwort:
{
"validationResponse": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
}
Hier ist der entsprechende Curl-Befehl zur Validierung eines Webhook-Abonnements, das das Event Grid-Ereignisschema verwendet:
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}
Weitere Informationen finden Sie unter Endpunkt-Validierung mit Event Grid Event Schema.
Lösung 2: Entfernen Sie Firewall- oder WAF-Regeln, die die Validierungsanfrage blockieren
Wenn dein Webhook zurückkehrt403 (Forbidden), überprüfe, ob er hinter einem Azure Application Gateway oder einer Web-Anwendungs-Firewall liegt. Wenn ja, deaktivieren Sie die folgenden Firewall-Regeln und führen Sie erneut HTTP POST durch:
- 920300 (Anfrage ohne Accept-Header)
- 942430 (Eingeschränkte SQL-Zeichenanomalieerkennung (Args): Anzahl der Sonderzeichen überschritten (12))
- 920230 (Mehrere URL-Codierungen erkannt)
- 942130 (SQL-Injektionsangriff: SQL-Tautologie erkannt)
- 931130 (Möglicher Remote File Inclusion (RFI)-Angriff: Off-Domain-Referenz oder Link)
Lösung 3: Validieren Sie ein CloudEvents-Schema-Abonnement
Wenn Ihr Abonnement das CloudEvents v1.0-Schema verwendet, verwendet Event Grid den CloudEvents-Missbrauchsschutz anstelle des Ablaufs der Abonnement-Validierung. Dein Endpunkt muss auf die HTTP OPTIONS-Methode reagieren und den WebHook-Allowed-Origin Header zurückgeben. Um mehr zu erfahren, siehe Endpunkt-Validierung mit dem CloudEvents-Schema.
Zugehöriger Inhalt
Wenn Sie weitere Hilfe benötigen, stellen Sie Ihre Frage auf der Microsoft Q&A-Seite für Event Grid oder öffnen Sie ein Supportticket.