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

Microsoft Graph创建用户创建事件订阅未收到通知求助

问题解答

你的预期没问题,Microsoft Graph确实支持通过订阅/users资源的created事件来接收新用户创建的通知,收不到通知大概率是配置或权限环节有疏漏,下面给你分析原因和解决办法:

可能的问题点

  • 权限不足:订阅用户创建事件需要应用权限(而非委托权限),必须确保你的应用已获得Directory.Read.All或Directory.ReadWrite.All权限,且完成了管理员同意。委托权限无法触发租户级的用户创建通知。
  • 通知端点未通过验证:创建订阅时,Graph会向你的NotificationUrl发送验证请求,要求返回请求中的validationToken参数。如果你的端点没正确处理这个验证逻辑,订阅会处于无效状态,自然收不到通知。
  • 订阅状态异常:创建订阅后可以调用GET /subscriptions接口查看订阅状态,确认是否为active。如果是failed,可以通过生命周期通知(LifecycleNotificationUrl)查看具体错误原因。

调整实现方案

  1. 确认权限配置:
    在Azure AD应用注册中,前往「API权限」添加Microsoft Graph的Directory.Read.All应用权限,点击「授予管理员同意」。
  2. 完善通知端点验证逻辑:
    你的/api/notifications端点需要处理GET请求,当收到包含validationToken参数的请求时,直接返回该参数内容(HTTP 200状态码)。示例逻辑(C#):
    [HttpGet]
    public IActionResult ValidateNotification([FromQuery] string validationToken)
    {
        return Ok(validationToken);
    }
    
  3. 备选方案:订阅审计日志
    如果直接订阅/users的created事件仍有问题,可以转而订阅Azure AD的审计日志,筛选用户创建事件:
    var sub = new Microsoft.Graph.Models.Subscription();
    sub.ChangeType = "created";
    sub.NotificationUrl = "https://*********.eu.ngrok.io/api/notifications";
    sub.Resource = "/auditLogs/directoryAudits";
    sub.LifecycleNotificationUrl = "https://*******.eu.ngrok.io/api/notifications";
    sub.ExpirationDateTime = DateTime.UtcNow.AddMinutes(10);
    sub.ClientState = "SecretClientState";
    // 后续可以在通知中筛选operationName为"Add user"的事件
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:30:13