Microsoft Graph API是否支持检索组成员增删历史及操作时间?
如何用Microsoft Graph API追踪组成员的新增/删除及操作时间
要追踪组成员的变更操作及对应的时间,你可以通过以下几种方式实现:
1. 查询目录审核日志
Azure AD会记录所有组的成员变更操作(添加/删除),通过Graph API的审核日志接口可以直接获取这些操作的详细信息,包括操作时间、操作人、变更的成员等。
示例查询
GET https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=targetResources/any(t: t/id eq '{你的组ID}') and activityDisplayName in ('Add member to group','Remove member from group')
返回结果中:
activityDateTime字段就是操作发生的具体时间targetResources数组里包含目标组和被变更的成员信息initiatedBy字段记录了执行该操作的用户或应用
注意:审核日志默认保留90天,如需更长时间可配置Azure AD日志存档。
2. 使用组成员的Delta查询
Delta查询是Graph API专门用于追踪资源增量变更的机制,无需手动对比两次查询结果,就能获取自上次查询以来新增或删除的组成员。
初始查询
GET https://graph.microsoft.com/v1.0/groups/{你的组ID}/members/delta
首次查询会返回当前所有成员,同时返回@odata.deltaLink链接。后续只需调用这个delta链接,就能获取自上次查询后的变更:
- 新增的成员会直接出现在结果列表中
- 删除的成员会带有
@removed属性(例如"@removed": {"reason": "deleted"})
注意:Delta查询本身不会返回操作时间,如果需要精确时间,建议结合审核日志使用。
3. 订阅组成员变更通知
通过Graph API的订阅功能,可以设置当目标组的成员发生变更时,主动向你的服务端点推送通知,实现实时感知变更。
示例订阅请求
POST https://graph.microsoft.com/v1.0/subscriptions Content-Type: application/json { "changeType": "created,deleted", "notificationUrl": "https://你的服务端点/notify", "resource": "groups/{你的组ID}/members", "expirationDateTime": "2024-12-31T00:00:00Z", "clientState": "任意随机字符串" }
收到通知后,你可以根据通知中的信息去查询审核日志,获取该变更的具体操作时间。
内容的提问来源于stack exchange,提问作者seung7642
相关产品推荐
相关产品推荐

