MS Graph API 订阅Azure AD用户变更时频繁触发过量通知问题咨询
问题原因
- 你当前订阅的资源路径为
/users,该范围默认包含用户主资源本身及所有关联子资源的变更触发权限,子资源包括用户的邮箱配置、日程安排、联系人、授权许可等非用户核心属性的资源,这类子资源的高频变更会直接触发你收到的通知。 - 未指定监听的具体用户属性:默认配置下任何用户属性(包括Azure AD后台系统同步产生的不可见属性变更)都会触发更新通知,而大部分触发事件可能并非你需要关注的业务属性变更。
- 如果你当前租户配置了本地AD与Azure AD的自动同步,批量同步操作也会产生大量你不需要的更新事件。
订阅请求的修正方案
你确实在订阅范围的配置上存在遗漏,可按以下方式调整订阅请求:
在资源路径后追加$select参数,明确指定你需要监听的用户核心属性,只有这些属性发生变更时才会触发通知,示例请求如下:
POST https://graph.microsoft.com/v1.0/subscriptions { "changeType": "updated", "notificationUrl": "https://mylogicapp.com", "resource": "/users?$select=id,displayName,userPrincipalName,accountEnabled", "expirationDateTime": "2021-11-11T11:00:00.0000000Z", "clientState": "SecretClientState" }
你可以根据自身业务需要调整$select后的属性列表,不在列表内的属性、所有子资源的变更都不会再触发通知。
额外可优化项:如果你不需要在通知中获取完整的资源数据,可在请求体中追加"includeResourceData": false,进一步降低通知触发的冗余度。
内容的提问来源于stack exchange,提问作者Muhammad Fahad Nadeem
相关产品推荐
相关产品推荐

