如何使用Azure Active Directory Graph SDK获取最近新增/修改的用户
Azure AD 增量用户查询实现指南
一、差分查询(Differential Query)所需属性
- 核心路径后缀:针对用户资源的差分查询只需在请求路径后添加
/delta标识,无需额外特殊属性即可触发增量查询逻辑 - 可选参数:
$select:指定需要返回的用户属性,比如displayName、userPrincipalName、createdDateTime等,减少返回数据冗余$filter:可叠加属性过滤规则,缩小返回变更的用户范围
- 响应核心字段:请求返回结果中会携带
deltaLink字段,保存该值后下次请求传入即可获取两次请求之间的所有用户变更数据
二、C# Azure AD Graph SDK 调用示例
首先安装对应NuGet包:Microsoft.Azure.ActiveDirectory.GraphClient,完成AAD应用权限配置和认证后,参考如下代码调用:
// 初始化已完成认证的ActiveDirectoryClient实例 ActiveDirectoryClient adClient = await GetAuthenticatedADClient(); // 首次发起增量用户查询 var deltaRequest = adClient.Users.ExecuteDeltaAsync(); List<User> changedUserList = new List<User>(); // 分页拉取所有变更数据 do { var deltaResponse = await deltaRequest; changedUserList.AddRange(deltaResponse.CurrentPage.OfType<User>()); deltaRequest = deltaResponse.MorePagesAvailable ? deltaResponse.GetNextPageAsync() : null; } while (deltaRequest != null); // 保存增量令牌,下一次查询直接传入即可获取后续变更 string deltaToken = deltaResponse.DeltaLink;
三、其他可用于查询新增/修改用户的属性
如果不需要持续增量同步,仅需要单次拉取指定时间范围内的变更用户,可以直接使用以下属性做过滤查询,无需使用差分查询:
lastModifiedDateTime:用户最后修改时间,可通过$filter筛选某个时间点之后修改的所有用户createdDateTime:用户创建时间,可单独用于筛选新增用户- 调用示例:
// 查询最近7天内有修改的所有用户 var recentModifiedUsers = await adClient.Users .Where(u => u.LastModifiedDateTime >= DateTimeOffset.UtcNow.AddDays(-7)) .ExecuteAsync();
你还可以根据业务需要叠加accountEnabled、department、userType等属性做组合筛选。
补充说明:Azure AD Graph已停止功能更新,如有条件建议迁移到Microsoft Graph,对应增量查询的逻辑和调用方式基本一致,兼容性更好。
内容的提问来源于stack exchange,提问作者dhruvil29
相关产品推荐
相关产品推荐

