Microsoft Graph API 支持 applicationRefs 信息

问题描述

Azure 端口在某些地方仍然使用 Azure AD Graph API。它使用的一件事是列出 API 权限。为此,门户使用 REST API 目标 GET https://graph.windows.net/myorganization/applicationRefs/c5393580-f805-4401-95e8-94b7a6ef2fc2?api-version=2.0(针对 Office 365 管理 API 显示的示例)。我已经搜索过,但似乎找不到使用 Microsoft Graph API 列出类似权限集的方法。有没有办法使用 Microsoft Graph API 访问它?

解决方法

好的,本来打算对之前的一个答案投赞成票,但我的个人资料太新了。 :( 如上所述,您可以通过读取租户中的 MS Graph 服务主体来完成此操作。此 PowerShell code 给出了一个示例(它在 Find-GraphPermission 和 { {1}} 个模块。

基本方法是:

  1. autographpsautographps-sdk 属性获取仅限应用的权限
  2. appRoles 属性获取委托权限
  3. servicePrincipal 的每个元素都有一个 ID,可以从租户中应用程序 publishedPermissionScopes 上的给定 appRoles 对象读取或写入该 ID。请注意,每个 appRoleAssigment 元素都有一个 servicePrincipal 属性,它是仅应用权限的通用友好名称(例如 appRole
  4. value 的每个元素都有一个类似的 BitlockerKey.ReadBasic.Allid 对,它为您提供委派的权限。您可以将这些 ID 与 value 段下的 publishedPermissionScopes 对象一起使用,以枚举租户中给定 oauth2PermissionGrant(因此 /oauth2PermissionGrants)的同意授权,或者授予或删除同意

请注意,servicePrincipalapp 的 ID 在所有租户中都是相同的,因此您实际上可以为任何租户执行相同的友好名称到 ID 的映射,并使用静态快照。这很有用,因为您的应用程序可能无法读取 Microsoft Graph appRoles 对象。如果您存储静态版本,则无论如何都将拥有映射,并且只会错过为新 API 添加到 Microsoft Graph 的任何新权限。

此文件包含 MS Graph publishedPermissionScopes 的快照,作为一个相当可读的类似 JSON 的 PowerShell 哈希表:https://github.com/adamedx/autographps-sdk/blob/main/src/common/DefaultScopeData.ps1

,

对于此要求,您可以使用 this microsoft graph api:https://graph.microsoft.com/v1.0/applications/<object id of the application>

它会响应如下截图的结果(请注意字段requiredResourceAccess): enter image description here

requiredResourceAccess 下的内容是本应用的 API 权限。类型 scope 表示权限为 Delegated 类型,类型 role 表示权限为 Application 类型。

那么请参考以下步骤,了解 id 字段下的 resourceAccess 是指哪个权限。

  1. 复制resourceAppId,在我的截图中是00000003-0000-0000-c000-000000000000。并请求图形 api:https://graph.microsoft.com/v1.0/serviceprincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'

  2. 复制第一个图形 API 响应中 id 字段下的 resourceAccess 之一。例如,在我的第一个屏幕截图中复制第一个 id a154bxxxxxxxxxxx59。然后在第二个图形api的响应中搜索这个id,我们可以找到这个id引用User.Read.All权限。 enter image description here