You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph创建Webhook订阅时验证请求未触发问题

排查Microsoft Graph订阅验证请求未抵达服务器的问题

我之前在搭建Graph Webhook订阅时也碰到过一模一样的情况,给你整理几个关键排查方向,应该能帮你定位问题:

  • 检查服务器防火墙/WAF的IP白名单
    虽然你用在线工具能访问验证端点,但Microsoft Graph的请求是从特定IP范围发出的。如果你的服务器防火墙或WAF没有把这些IP加入白名单,请求会直接被拦截。你需要核对微软官方公布的Graph服务IP范围,确保这些IP能正常访问你的验证URL。

  • 确认验证URL的有效性
    微软对notificationUrl有严格要求:

    • 必须是HTTPS协议,且使用受信任CA颁发的有效证书(自签名证书会被拒绝);
    • URL不能包含任何重定向,必须直接指向处理验证请求的端点;
    • 检查URL拼写,比如路径、域名有没有大小写错误或者多余字符。
  • 验证服务器对验证请求的响应是否合规
    当Microsoft Graph发送验证请求时,会在查询参数里带上validationToken,你的服务器必须原封不动地将这个token作为响应体返回,同时返回200 OK状态码。如果你的服务器返回的是自定义页面、JSON或者其他内容,微软会判定验证失败,不会继续发送请求。你可以模拟一个带validationToken参数的GET请求到你的端点,确认返回的就是这个token本身。

  • 检查订阅请求的参数是否正确
    确保你发送到https://graph.microsoft.com/v1.0/subscriptions的POST请求里,必填参数都正确:

    • changeType:必须是符合资源类型的有效值(比如created,updated);
    • resource:要订阅的Graph资源路径必须正确(比如/me/mailFolders('Inbox')/messages);
    • expirationDateTime:不能超过微软允许的最大期限(当前针对大多数资源是4230分钟,也就是70.5小时),也不能设置为过去的时间。
  • 查看订阅创建后的状态
    发送POST请求后,检查返回的JSON响应里的status字段:

    • 如果是pendingVerification:说明验证流程还没完成,大概率是前面的响应或URL问题;
    • 如果是enabled但仍未收到请求:可以尝试触发一次对应资源的变更(比如发一封邮件到订阅的收件箱),然后再检查服务器日志。
  • 深挖服务器日志细节
    除了常规的请求访问日志,还要查看防火墙的拒绝日志、Web服务器的错误日志,有没有来自微软IP的连接被拒绝、超时或者其他错误记录,这些往往能直接定位问题。

内容的提问来源于stack exchange,提问作者Gavin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:51:35