如何用C#及MS Graph实现Azure组PIM请求的自动审批
组PIM请求自动审批的实现方案
一、核心HTTP请求构造
组PIM请求的审批操作无需使用角色专属端点,统一通过approvals端点执行,具体格式如下:
PATCH https://graph.microsoft.com/beta/approvals/{approvalId}/steps/{approvalStepId} Content-Type: application/json { "reviewResult": "Approve", // 拒绝请改为"Deny" "justification": "自动审批:符合权限申请规则" }
二、C# MS Graph SDK实现代码
从你已获取的assignmentScheduleRequests对象中提取关联的审批ID和步骤ID,再执行审批操作:
// 获取带审批关联信息的待审批组请求 var groupRequests = await GraphClient.IdentityGovernance.PrivilegedAccess.Group.AssignmentScheduleRequests .FilterByCurrentUserWithOn("approver") .GetAsFilterByCurrentUserWithOnGetResponseAsync(config => { config.QueryParameters.Expand = ["approval", "group", "principal"]; // 扩展approval字段获取审批关联数据 }); // 遍历处理每个待审批请求 foreach (var request in groupRequests.Value) { if (request.Approval == null) continue; // 跳过无审批流程的请求 var approvalId = request.Approval.Id; // 获取当前处于待处理状态的审批步骤(多步审批需根据业务逻辑调整筛选规则) var approvalSteps = await GraphClient.Approvals[approvalId].Steps.GetAsync(); var targetStep = approvalSteps.Value.First(s => s.Status == "InProgress"); // 构造审批更新内容 var updateStep = new ApprovalStep { ReviewResult = "Approve", // 拒绝操作设为"Deny" Justification = "自动审批:权限申请符合预设策略" }; // 执行审批操作 await GraphClient.Approvals[approvalId].Steps[targetStep.Id].PatchAsync(updateStep); }
三、官方文档参考说明
微软Graph Beta版文档中,以下内容可作为参考依据:
- ApprovalStep 资源的PATCH方法:该方法适用于所有类型的审批流程(包括组PIM请求),明确了更新审批步骤的参数要求与逻辑。
- Privileged Access Groups 章节:详细说明了组PIM请求与审批资源的关联关系,可了解
assignmentScheduleRequest对象中approval属性的作用机制。
内容的提问来源于stack exchange,提问作者dragonmost
相关产品推荐
相关产品推荐

