Microsoft Graph AddOwner API无法添加Application为组所有者如何解决
你遇到的报错是因为调用Graph API添加组所有者时,直接传入了Application对象的ID,而Azure AD中可被添加为组所有者的应用身份实际是应用注册对应的**服务主体(Service Principal)**对象,并非Application对象本身。Azure门户操作时后台会自动匹配对应的服务主体,因此可以操作成功。
操作步骤
第一步:获取目标应用对应的服务主体ID
调用如下Graph接口查询你要添加的应用对应的服务主体对象ID,替换占位符为你的应用注册的AppId:GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '你的应用注册AppId'
接口返回结果中id字段的值即为服务主体的对象ID,注意区分该ID和应用注册页面显示的Application(客户端)ID。第二步:调用接口添加服务主体为组所有者
替换占位符后发起如下请求即可:
请求方法:POST
接口地址:https://graph.microsoft.com/beta/groups/{你的目标组ID}/owners/$ref
请求头:Authorization: Bearer <你的访问令牌> Content-Type: application/json请求体:
{ "@odata.id": "https://graph.microsoft.com/beta/directoryObjects/<第一步获取的服务主体对象ID>" }第三步:验证添加结果
调用如下接口查询组所有者列表,确认列表中存在类型为#microsoft.graph.servicePrincipal的对应对象即添加成功:GET https://graph.microsoft.com/beta/groups/{你的目标组ID}/owners
注意事项
- 调用上述接口需要提前授予
Group.ReadWrite.All或Directory.ReadWrite.All权限,若使用应用权限需要完成管理员同意。 - 所有操作使用Beta版本Graph API即可,无需切换到V1.0版本。
内容的提问来源于stack exchange,提问作者Alessandro De Vitis

