如何通过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
相关产品推荐
相关产品推荐

