查找 Microsoft Graph 范围

问题描述 投票:0回答:2

由于 Graph 是一种自记录语言,我想利用它来发挥自己的优势,编写 PowerShell 函数来根据元数据自动生成 cmdlet。我已经完成了很多这样的工作,但在确定范围时遇到了问题。有没有办法找到范围?它不存储在元数据中,并且文档没有列出所有内容的范围(例如,Excel 中没有列出任何范围)。

Graph Explorer 似乎请求正确的权限,因此可以在某处访问此列表。

microsoft-graph-api
2个回答
3
投票

这取决于您正在寻找哪个 API。

Azure AD Graph API 的范围位于 https://msdn.microsoft.com/library/azure/ad/graph/howto/azure-ad-graph-api-permission-scopes

https://developer.microsoft.com/en-us/graph/docs/authorization/permission_scopes 上有一个关于 Microsoft Graph API 不同部分的巨大列表。

首次登录 Graph Explorer 时,您授予它以下权限:

根据上面的描述和链接,您可以找出列表中每个项目的范围名称。 (例如第一个是 Mail.ReadWrite)。

在 Azure AD 中创建应用程序时,您可以配置它需要访问哪些应用程序以及需要哪些访问权限。这会生成用户在首次登录时授予访问权限的列表。


0
投票

我编写了一个小函数来枚举所有 Microsoft Graph API 权限(基于 此参考)。目前需要

jq
,可能有一种方法可以在 PowerShell 中 100% 完成此操作,但这是一个快速而肮脏的修复。您可以进一步通过管道连接到
grep
来帮助查找您需要的权限。

将此功能添加到您的

Microsoft.PowerShell_profile.ps1
(
$PROFILE
) 以方便使用:

function Get-MgGraph-Scopes {
  $uri = "https://graph.microsoft.com/v1.0/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')?$select=id,appId,displayName,appRoles,oauth2PermissionScopes,resourceSpecificApplicationPermissions"
  Invoke-MgGraphRequest -Uri $uri -OutputType Json |
  jq -r '.appRoles + .oauth2PermissionScopes | .[] | .value'
}

使用示例:

PS > Get-MgGraph-Scopes | grep -i calendar
Calendars.Read
Calendars.ReadBasic.All
Calendars.ReadWrite
Calendars.Read
Calendars.Read.Shared
Calendars.ReadBasic
Calendars.ReadWrite
Calendars.ReadWrite.Shared
© www.soinside.com 2019 - 2024. All rights reserved.