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

如何通过C#调用Microsoft Graph API获取分配给用户的服务主体Assignment ID

获取用户关联服务主体的Assignment ID(C#调用Microsoft Graph实现)

前置准备

  • 首先在Azure Portal中给你的应用配置对应的Graph API权限,需至少授予AppRoleAssignment.Read.All应用权限(若后续需要删除分配,可授予AppRoleAssignment.ReadWrite.All权限),并完成管理员同意。
  • 安装所需NuGet包:
    Install-Package Microsoft.Graph
    Install-Package Azure.Identity
    

核心实现逻辑

你需要调用的是Microsoft Graph的用户应用角色分配接口,返回结果中的id字段即为你需要的Assignment ID,你可以通过返回结果中的resourceDisplayName(服务主体名称)或resourceId(服务主体对象ID)过滤得到指定服务主体对应的分配ID。

示例代码

using Azure.Identity;
using Microsoft.Graph;
using Microsoft.Graph.Models;

// 初始化Graph客户端
var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "你的Azure AD租户ID";
var clientId = "你的应用客户端ID";
var clientSecret = "你的应用客户端密钥";

var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

try
{
    // 替换为目标用户的ID或者用户主体名称(user@domain.com)
    string targetUserId = "目标用户ID";
    // 替换为目标服务主体的对象ID(可选,用于过滤特定服务主体)
    string targetServicePrincipalObjectId = "目标服务主体对象ID";

    // 获取该用户的所有应用角色分配
    var appRoleAssignments = await graphClient.Users[targetUserId].AppRoleAssignments.GetAsync();

    if (appRoleAssignments?.Value != null)
    {
        foreach (var assignment in appRoleAssignments.Value)
        {
            // 过滤指定服务主体的分配(如果不需要过滤可以去掉该判断)
            if (assignment.ResourceId.ToString() == targetServicePrincipalObjectId)
            {
                Console.WriteLine($"找到对应Assignment ID:{assignment.Id}");
                Console.WriteLine($"服务主体名称:{assignment.ResourceDisplayName}");
                Console.WriteLine($"分配的应用角色ID:{assignment.AppRoleId}");
            }
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"请求出错:{ex.Message}");
}

字段说明

  • 接口返回的AppRoleAssignment对象中,id就是你需要的Assignment ID,可直接用于后续的删除、查询等操作。
  • principalId为分配对象的ID,此处对应用户的对象ID。
  • resourceId为被分配的资源ID,此处对应服务主体的对象ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:09:03