将用户添加至Azure AD组的最优集成方式及可用API咨询
解决方案
1. 添加用户至Azure AD组的可用接口
你之前调用的https://graph.microsoft.com/v1.0/groups/{groupID}根接口不是成员添加的专用接口,微软从未废弃组成员管理的相关Graph API,你需要使用专门的组成员引用接口POST /groups/{group-id}/members/$ref完成操作,具体调用要求如下:
- 权限配置:给你的Java应用注册的Azure AD应用实体授予应用权限
GroupMember.ReadWrite.All,完成配置后必须点击「授予管理员同意」生效,该权限适配你HR数据同步的后台服务场景。 - Postman测试流程:
- 首先获取访问令牌:向
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token发起POST请求,参数传入grant_type=client_credentials、scope=https://graph.microsoft.com/.default、client_id=你的应用ID、client_secret=你的应用密钥,拿到响应中的access_token字段。 - 调用添加成员接口:向
https://graph.microsoft.com/v1.0/groups/{目标组ID}/members/$ref发起POST请求,请求头携带Authorization: Bearer {上一步获取的access_token},请求体格式如下:
接口返回204状态码即代表添加成功。{ "@odata.id": "https://graph.microsoft.com/v1.0/users/{目标用户的ID或用户主体名称}" } - 首先获取访问令牌:向
2. 用户关联属性读写方案
2020年10月调整的是旧版关联属性的独立路由,你可以直接调用GET /users/{user-id}或PATCH /users/{user-id}接口完成用户属性的读写:
- 读取属性时在请求URL后添加参数
$select=属性1,属性2即可获取指定属性 - 修改属性时直接在PATCH请求的请求体中传入要修改的属性键值对即可,自定义扩展属性需要传入完整的扩展属性标识
3. Java应用集成示例
推荐直接使用微软官方的Microsoft Graph Java SDK,无需自行封装HTTP请求,核心代码片段如下:
// 引入依赖后初始化Graph客户端 ClientCredentialProvider authProvider = new ClientCredentialProvider( "应用客户端ID", new String[]{"https://graph.microsoft.com/.default"}, "应用客户端密钥", "租户ID", NationalCloud.Global ); GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(authProvider).buildClient(); // 执行用户添加到组的操作 DirectoryObject userRef = new DirectoryObject(); userRef.id = "目标用户的ID"; graphClient.groups("目标组ID").members().references() .buildRequest() .post(userRef);
内容的提问来源于stack exchange,提问作者skigdmg
相关产品推荐
相关产品推荐

