如何通过Delta Graph API仅获取Azure AD的用户变更数据?
仅检索Azure AD用户变更数据的解决方案
核心原理
Microsoft Graph的Users.Delta API本身就是用于追踪Azure AD中用户对象的变更。第一次调用时会返回所有用户的完整快照(作为基线),同时返回一个deltaLink;后续使用该deltaLink发起请求,就只会返回自上次调用以来的Azure AD用户变更记录。
具体实现步骤
初始调用获取基线与deltaLink
首次调用时获取全量用户数据(基线),并保存返回的deltaLink,用于后续变更查询:var result = await graphClient.Users.Delta.GetAsync((requestConfiguration) => { requestConfiguration.QueryParameters.Select = new string []{ "displayName","givenName","surname" }; }); // 持久化保存deltaLink,比如存入数据库或配置文件 string deltaLink = result.OdataDeltaLink;后续调用获取变更数据
使用之前保存的deltaLink发起请求,仅获取自上次调用后的Azure AD用户变更:// 从存储中读取保存的deltaLink var deltaRequest = new HttpRequestMessage(HttpMethod.Get, deltaLink); var deltaResult = await graphClient.RequestAdapter.SendAsync(deltaRequest, typeof(UserDeltaCollectionResponse));过滤特定变更(可选)
如果需要只关注特定属性或特定用户的变更,可以添加$filter条件(注意Delta API对$filter的支持有限,仅部分属性可用):var result = await graphClient.Users.Delta.GetAsync((requestConfiguration) => { requestConfiguration.QueryParameters.Select = new string []{ "displayName","givenName","surname" }; // 示例:仅筛选特定用户的变更 requestConfiguration.QueryParameters.Filter = "id eq '00000000-0000-0000-0000-000000000000'"; });
注意事项
deltaLink是持续追踪变更的关键,必须妥善保存,每次调用后如果返回新的deltaLink,需要更新存储的链接。- 如果
deltaLink过期或丢失,需要重新发起初始调用获取基线,再继续追踪变更。
内容的提问来源于stack exchange,提问作者Sidhu
相关产品推荐
相关产品推荐

