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

创建委托管理员关系:获取Microsoft Graph统一角色roleDefinitionId

如何获取Azure AD统一管理角色的roleDefinitionId并实现自动转换

一、直接使用固定的角色ID(推荐)

Azure AD的统一管理角色ID是全局固定的,不会随租户变化,你可以直接在代码中预定义角色名称与ID的映射表,无需调用API。常用角色对应关系如下:

  • 全局管理员(Global admin):62e90394-69f5-4237-9190-012177145e10
  • 用户管理员(User administrator):fe930be7-5e62-47db-91af-98c3a49a38b1
  • 计费管理员(Billing administrator):b0f54661-2d74-4c50-afa3-1ec803f12efe
  • 服务管理员(Service administrator):d936f2d0-98a6-420d-9607-45412663957b
  • 密码管理员(Password administrator):9b895d92-2cd3-44c7-9d02-a6ac2d5ea5c3

二、编程方式动态获取所有角色ID

如果需要支持全量管理角色,可通过Microsoft Graph API调用获取租户的所有统一角色及其ID:

调用接口

发送GET请求到:

https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions

权限要求

需要拥有RoleManagement.Read.Directory权限(委托权限或应用权限均可)。

三、PHP实现角色名称转ID的方案

方案1:预定义映射表(高效)

在前端HTML表单中提供角色选择下拉框:

<select name="selectedRole">
  <option value="Global admin">全局管理员</option>
  <option value="User administrator">用户管理员</option>
  <!-- 按需添加其他角色 -->
</select>

后端PHP直接通过映射数组转换:

// 预定义角色名称与ID的映射
$roleIdMap = [
    'Global admin' => '62e90394-69f5-4237-9190-012177145e10',
    'User administrator' => 'fe930be7-5e62-47db-91af-98c3a49a38b1',
    // 补充更多角色
];

// 获取表单提交的角色名称
$selectedRoleName = $_POST['selectedRole'] ?? '';
// 匹配对应的roleDefinitionId
$roleDefinitionId = $roleIdMap[$selectedRoleName] ?? '';

方案2:动态获取并匹配

如果需要自动同步最新角色,可先调用Graph API获取角色列表并缓存(角色不会频繁变动),再进行匹配:

// 假设已获取有效的Microsoft Graph访问令牌
$accessToken = 'YOUR_ACCESS_TOKEN';

// 调用Graph API获取角色列表
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer {$accessToken}",
    "Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);

// 解析响应并构建映射数组
$roleData = json_decode($response, true);
$roleIdMap = [];
foreach ($roleData['value'] as $role) {
    $roleIdMap[$role['displayName']] = $role['id'];
}

// 根据表单提交的角色名称获取ID
$selectedRoleName = $_POST['selectedRole'] ?? '';
$roleDefinitionId = $roleIdMap[$selectedRoleName] ?? '';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:55:13