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

如何通过Graph API获取Azure PIM中的‘我的角色’?

通过Graph API获取Azure PIM中“我的角色”(合格组分配)的方法

1. 所需权限

需要为你的应用注册添加委托权限:PrivilegedAccess.Read.AzureADGroup,并由租户管理员授予同意。该权限允许应用读取当前用户的Azure AD组特权访问分配信息。

2. Graph API请求端点

使用以下GET请求获取当前用户的Azure AD组PIM合格分配(对应门户中“我的角色”→“合格分配”→“组”的内容):

GET https://graph.microsoft.com/v1.0/me/privilegedAccess/azureADGroups/eligibilitySchedules

3. C# 代码实现(使用Microsoft Graph SDK)

首先安装Microsoft Graph SDK相关NuGet包:

Install-Package Microsoft.Graph
Install-Package Microsoft.Identity.Client

编写代码获取合格分配:

using Microsoft.Graph;
using Microsoft.Identity.Client;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var clientId = "你的应用客户端ID";
        var tenantId = "你的租户ID";
        var scopes = new[] { "PrivilegedAccess.Read.AzureADGroup" };

        // 初始化身份验证客户端
        var publicClientApp = PublicClientApplicationBuilder
            .Create(clientId)
            .WithTenantId(tenantId)
            .WithRedirectUri("http://localhost")
            .Build();

        // 获取用户访问令牌
        var authResult = await publicClientApp.AcquireTokenInteractive(scopes)
            .ExecuteAsync();

        // 初始化Graph客户端
        var graphClient = new GraphServiceClient(
            new DelegateAuthenticationProvider((requestMessage) =>
            {
                requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(
                    "Bearer", authResult.AccessToken);
                return Task.CompletedTask;
            }));

        try
        {
            // 获取当前用户的Azure AD组PIM合格分配
            var eligibilitySchedules = await graphClient.Me.PrivilegedAccess.AzureADGroups.EligibilitySchedules
                .Request()
                .GetAsync();

            // 遍历并输出结果
            foreach (var schedule in eligibilitySchedules)
            {
                // 获取组的名称信息
                var group = await graphClient.Groups[schedule.GroupId]
                    .Request()
                    .Select(g => new { g.DisplayName })
                    .GetAsync();

                Console.WriteLine($"组名称: {group.DisplayName}, 分配状态: {schedule.Status}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"请求失败: {ex.Message}");
        }
    }
}

补充说明

  • 若需获取已激活的角色分配(而非合格分配),可将端点替换为:/me/privilegedAccess/azureADGroups/activationSchedules
  • 响应中的groupId字段可用于调用/groups/{groupId}端点,获取组的更多详细信息
  • 确保应用已在Azure AD中完成注册,并完成权限的管理员同意流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:17:33