首页 > 解决方案 > Azure 服务主体:为服务主体授予 appRoleAssignment 确实会更新原始权限的状态

问题描述

我正在尝试授予管理员同意使用 Microsoft 图形 API 分配的权限。我执行的步骤如下:

  1. 创建定义了“appRoles”数组的应用程序。

  2. 使用 appId 创建服务主体。

  3. 为服务主体授予 appRoleAssignment。我运行了http post请求:

https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo

  1. 在 Azure 门户中,我看到它不是授予最初存在的权限,而是创建另一个权限并授予对它的同意,如下图所示。

在此处输入图像描述

为什么即使“appRoleId”相同,它也不授予原始权限?我想授予原始权限,有人可以告诉我吗?谢谢。

标签: azureazure-active-directorymicrosoft-graph-apiazure-service-principal

解决方案


当然,它不会授予原始权限,当您创建应用程序并公开 API 权限时,此权限和 in 的权限Exchange完全是两个不同的权限,来自不同的 API,无论appRoleId它们使用什么。

要为您的应用授予full_access_as_app 应用程序权限,请按照以下步骤操作。

1.在门户中导航到您的 AD 应用程序 -> Manifest-> requiredResourceAccess,获取resourceAppIdand id,记idappRoleId.

在此处输入图像描述

2.导航到Azure Active Directory门户中的 -> Enterprise applications-> 搜索resourceAppId步骤 1 中的获取,然后您将找到Office 365 Exchange Online-> 单击它 -> Overview-> 获取Object ID,记下它为resourceId.

注意:这Object ID在不同的 AAD 租户中有所不同。

在此处输入图像描述

3.导航到您的 AD 应用程序 -> 单击Managed application in local directory,然后获取Object ID,将其记为principalId

在此处输入图像描述

在此处输入图像描述

4.然后调用您使用的 Microsoft Graph -为服务主体授予 appRoleAssignment,使用之前获得的值。

POST https://graph.microsoft.com/v1.0/servicePrincipals/<resourceId>/appRoleAssignedTo

{
  "principalId": "<principalId>",
  "resourceId": "<resourceId>",
  "appRoleId": "<appRoleId>"
}

我在Graph Explorer中测试它:

在此处输入图像描述

检查门户中的结果,它工作正常。

在此处输入图像描述


推荐阅读