0

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 访问它?

4

2 回答 2

3

好的,本来打算赞成以前的答案之一,但是我的个人资料太新了。:( 如上所述,您可以通过阅读租户中的 MS Graph 服务主体来执行此操作。此PowerShell 代码给出了一个示例(它用于在and模块中调用的命令Find-GraphPermission中。autographpsautographps-sdk

基本做法是:

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

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

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

于 2021-02-03T01:08:48.207 回答
0

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

它将响应如下截图的结果(请注意字段requiredResourceAccess): 在此处输入图像描述

下面的内容requiredResourceAccess就是这个应用的API权限。typescope表示权限为Delegated类型,typerole表示权限为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字段。例如复制a154bxxxxxxxxxxx59我的第一个屏幕截图中的第一个 id。然后在第二个graph api的response中搜索这个id,我们可以发现这个id是指User.Read.All权限。 在此处输入图像描述

于 2021-01-04T08:36:47.393 回答