排查 Azure 事件网格订阅验证问题

在创建事件订阅的过程中,如果看到诸如 The attempt to validate the provided endpoint https://your-endpoint-here failed. For more details, visit https://aka.ms/esvalidation 之类的错误消息,则表明验证握手失败。 若要解决此错误,请验证以下各方面:

  • 使用 curl 或类似工具,通过一个示例 SubscriptionValidationEvent 请求正文对 Webhook URL 执行 HTTP POST。
  • 如果 Webhook 实现了同步验证握手机制,请验证 ValidationCode 是否作为响应的一部分返回。
  • 如果 Webhook 实现了异步验证握手机制,请验证 HTTP POST 是否返回了“200 正常”。
  • 如果 Webhook 在响应中返回了 403 (Forbidden),请检查 Webhook 是否位于 Azure 应用程序网关或 Web 应用程序防火墙后面。 如果是,则需要禁用这些防火墙规则,然后重新执行 HTTP POST:
    • 920300(请求缺少 Accept 标头)
    • 942430(受限 SQL 字符异常情况检测 (args):已超出特殊字符数 (12))
    • 920230(检测到多个 URL 编码)
    • 942130(SQL 注入攻击:检测到 SQL 同义反复。)
    • 931130(可能的远程文件包含 (RFI) 攻击 = 域外引用/链接)

重要

有关 webhook 终结点验证的详细信息,请参阅 Webhook 事件传送

下面是一个示例 SubscriptionValidationEvent JSON,可以使用 CURL 等工具发送:

[
  {
    "id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66",
    "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"
  }
]

下面是成功响应的示例:

{
  "validationResponse": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
}

使用 Curl 验证事件网格事件订阅

下面是用于验证事件网格事件的 webhook 订阅的 Curl 命令的示例:

curl -X POST -d '[{"id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66","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}

若要详细了解 webhook 事件网格事件验证,请参阅事件网格事件的终结点验证

验证云事件订阅

使用 HTTP OPTIONS 方法执行云事件验证。 若要详细了解 webhook 云事件验证,请参阅云事件的终结点验证

排查事件订阅验证问题

后续步骤

如需更多帮助,请在 Stack Overflow 论坛中发布问题,或开具支持票证