在Microsoft 标识平台授权应用访问Microsoft云中的数据之前,必须授予应用所需的权限。 同样,在Microsoft 标识平台授权应用通过 Microsoft Graph 访问数据之前,必须向应用授予所需的权限。
通过 Microsoft Graph 授予应用访问和处理数据所需的权限的一种方法是向其分配 Microsoft Graph 权限。 另一种方法是通过基于角色的访问控制 (RBAC) 系统,如 Microsoft Entra RBAC。 在某些情况下,通过 Microsoft Graph API 访问数据可能需要Microsoft Graph 权限和 RBAC 权限。
本文介绍Microsoft Graph 权限,并提供使用这些权限的指导。 若要查看 Microsoft Graph 公开的权限的完整列表,请参阅 Microsoft Graph 权限参考。
若要了解有关权限工作原理的详细信息,watch以下视频。
权限类型
Microsoft Graph 支持 两种访问方案: 委托访问 和 仅应用访问。 在委托访问中,应用代表已登录用户调用 Microsoft Graph。 在仅限应用的访问中,应用使用自己的标识调用 Microsoft Graph,而无需登录用户。
GET https://graph.microsoft.com/v1.0/groups/{id}/members
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups["{group-id}"].Members.GetAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
members, err := graphClient.Groups().ByGroupId("group-id").Members().Get(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
DirectoryObjectCollectionResponse result = graphClient.groups().byGroupId("{group-id}").members().get();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
result = await graph_client.groups.by_group_id('group-id').members.get()
在与Microsoft Entra ID资源相关的 API 参考文档中,可能会有意从支持访问 API 的权限表中排除其中一些较高特权的权限。
此外,全局管理员角色是 Microsoft Entra ID 中特权最高的内置角色。 在 API 参考文档中,此角色被有意排除在支持访问 API 的角色列表中,而支持较低特权的角色。
每个应用请求的权限限制
Microsoft Entra ID限制客户端应用可以请求和同意的权限数。 这些限制取决于 signInAudience 应用的值,如 应用清单中所示。
signInAudience
允许的用户
应用可以请求的最大权限
应用可以请求的最大 Microsoft Graph 权限
单个请求中可同意的最大权限
AzureADMyOrg
注册应用的组织中的用户
400
400
大约 155 个委派权限和大约 300 个应用程序权限
AzureADMultleOrgs
任何Microsoft Entra组织中的用户
400
400
大约 155 个委派权限和大约 300 个应用程序权限
PersonalMicrosoftAccount
消费者用户(如 Outlook.com 或 Live.com 帐户)
30
30
30
AzureADandPersonalMicrosoftAccount
使用者用户和来自任何Microsoft Entra组织的用户
30
30
30
通过 Microsoft Graph 检索权限 ID
若要使用 Azure CLI、PowerShell 或基础结构即代码框架设置权限,可能需要要使用的权限的标识符,而不是名称。
权限参考列出了所有 Microsoft Graph 权限的 ID。 或者,可以通过 Microsoft Graph 中的 获取 servicePrincipal API 以编程方式读取有关所有 Microsoft Graph 权限的信息。 以下示例显示了一个请求。
GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')?$select=id,appId,displayName,appRoles,oauth2PermissionScopes,resourceSpecificApplicationPermissions