Azure 服务主体:为服务主体授予 appRoleAssignment 会更新原始权限的状态

Azure service principal: Grant an appRoleAssignment for a service principal does update the original permission's status

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

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

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

  3. G运行t 服务主体的 appRoleAssignment。 我 运行 http post 请求:

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

  1. 在 Azure 门户中,我看到它正在创建另一个权限,而不是 g运行ting 最初存在的权限,并且 g运行ting 同意它,如下图所示。

为什么不是 g运行ting 原始权限,即使 'appRoleId' 相同?我想获得运行t原始许可,有人可以告诉我吗?谢谢

当然不会授予原来的权限,当你创建一个应用并暴露API权限时,这个权限和Exchange中的权限完全是两个不同的权限APIs,无论他们使用什么appRoleId

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

1.Navigate 到门户中的广告应用 -> Manifest -> requiredResourceAccess,获取 resourceAppIdid,注意 id 下降为 appRoleId.

2.Navigate到门户中的Azure Active Directory -> Enterprise applications -> 搜索步骤1中得到的resourceAppId,然后你会找到Office 365 Exchange Online -> 单击它 -> Overview-> 得到 Object ID,记为 resourceId.

注意:这个Object ID在不同的AAD租户中是不同的。

3.Navigate 到您的 AD 应用程序 -> 点击 Managed application in local directory,然后得到 Object ID,记为 principalId

4.Then 调用您使用的 Microsoft Graph - Grant an appRoleAssignment for a service principal,使用之前得到的值。

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

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

我在Graph Explorer中测试它:

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