You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求支持Application权限的Microsoft Graph API以更新AAD设备所有权

使用Microsoft Graph应用权限更新AAD设备所有权

操作步骤与解决方案

  • 配置应用权限:在Azure AD应用注册中添加Device.ReadWrite.All应用权限,完成管理员同意后,后台服务就能以应用身份读写所有AAD设备资源。
  • 替换认证方式:弃用需要用户交互的InteractiveBrowserCredential,改用客户端凭证模式实例化GraphServiceClient,实现无用户参与的后台认证。
  • 调用所有者更新接口:尽管官方文档标注device-post-registeredowners需要委派权限,但持有Device.ReadWrite.All应用权限时,同样可通过添加/移除所有者引用的方式完成所有权变更,以下是C#示例代码:
using Azure.Identity;
using Microsoft.Graph;

var tenantId = "你的租户ID";
var clientId = "你的应用注册Client ID";
var clientSecret = "你的应用注册Client Secret";

// 初始化无交互的Graph客户端
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(credential);

// 示例1:为指定设备添加新所有者
var targetDeviceId = "目标设备的ID";
var newOwnerUserId = "要设置为所有者的用户ID";
await graphClient.Devices[targetDeviceId].RegisteredOwners.References.Request().AddAsync(new User { Id = newOwnerUserId });

// 示例2:替换设备所有现有所有者
var existingOwners = await graphClient.Devices[targetDeviceId].RegisteredOwners.Request().GetAsync();
foreach (var owner in existingOwners)
{
    await graphClient.Devices[targetDeviceId].RegisteredOwners[owner.Id].References.Request().DeleteAsync();
}
await graphClient.Devices[targetDeviceId].RegisteredOwners.References.Request().AddAsync(new User { Id = newOwnerUserId });

关键注意事项

  • 必须确保应用注册的Device.ReadWrite.All权限已获得管理员同意,否则会触发权限不足的错误。
  • 设备未被Intune管理不影响该操作,此操作直接针对AAD设备对象,与Intune管理无关。
  • 若需要完全替换所有权,需先删除现有所有者的引用,再添加新的用户引用。

内容的提问来源于stack exchange,提问作者Vishal Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:42:03