为应用注册配置 Azure AD Graph 权限

Azure Active Directory (Azure AD) Graph 已弃用,并且处于停用路径中。 建议遵循 应用迁移规划清单 ,以帮助你将应用迁移到 Microsoft Graph

应用可能仍暂时需要 Azure AD Graph 权限才能访问资源。 可以按照本文中所述的四种方法之一为应用注册配置 Azure AD Graph 权限:

  1. 使用Microsoft Entra 管理中心查找组织使用的 API
  2. 更新Microsoft Entra 管理中心上的应用程序清单
  3. 使用 Microsoft Graph 应用程序 API

警告

使用 Azure AD Graph 的任何应用在停用 API 后仍将停止运行。 有关详细信息,请参阅 将 Azure AD Graph 应用迁移到 Microsoft Graph

先决条件

本文中的步骤需要两组特权:

  • 向应用注册添加权限的权限
  • 向应用注册授予这些权限的权限。

具有 全局管理员 角色的用户可以同时执行此操作,而具有 应用程序管理员云应用程序管理员 角色的用户只能添加权限。 为了帮助你强制实施职责分离和最小特权访问,请将添加权限和授予不同用户权限的任务分开。 有关这些角色支持的操作的详细信息,请参阅Microsoft Entra内置角色

此外,还需要以下资源和特权:

  • 登录到 API 客户端(例如 Graph 资源管理器) 以运行 HTTP 请求。
  • 必须向用于进行这些更改的应用授予 Application.ReadWrite.All 权限。

使用 Microsoft Graph 应用程序 API

Microsoft Graph 应用程序对象 包括 requiredResourceAccess 属性,该属性是对象的集合,其中包含有关资源 API 和权限的信息。 使用此属性配置 Azure AD Graph 权限,如以下步骤中所述。

步骤 1:确定应用所需的 Azure AD Graph 权限的权限 ID

确定应用所需的 Azure AD Graph 权限、权限 ID,以及它们是应用角色 (应用程序权限) 还是 oauth2PermissionScopes (委托权限) 。 有关详细信息,请参阅 Azure AD Graph 权限参考

Azure AD Graph 被标识为 servicePrincipal 对象,其 00000002-0000-0000-c000-000000000000 全局唯一 appIdWindows Azure Active DirectorydisplayNameappDisplayName。 运行以下请求,检索租户中 Azure AD Graph 的服务主体对象。

请求

GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '00000002-0000-0000-c000-000000000000'

响应

在响应对象中,Azure AD Graph 应用程序权限的详细信息在 appRoles 对象中列出,而委托权限的详细信息在 oauth2PermissionScopes 对象中列出。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals",
    "value": [
        {
            "id": "1804a6f8-e623-4520-8f40-ba1b0c11c42d",
            "accountEnabled": true,
            "appDisplayName": "Windows Azure Active Directory",
            "appDescription": null,
            "appId": "00000002-0000-0000-c000-000000000000",
            "appOwnerOrganizationId": "f8cdef31-a31e-4b4a-93e4-5f571e91255a",
            "appRoleAssignmentRequired": false,
            "displayName": "Windows Azure Active Directory",
            "servicePrincipalNames": [
                "https://graph.windows.net",
                "00000002-0000-0000-c000-000000000000/graph.microsoftazure.us",
                "00000002-0000-0000-c000-000000000000/graph.windows.net",
                "00000002-0000-0000-c000-000000000000/directory.windows.net",
                "00000002-0000-0000-c000-000000000000",
                "https://graph.windows.net/",
                "https://graph.microsoftazure.us"
            ],
            "servicePrincipalType": "Application",
            "signInAudience": "AzureADMultipleOrgs",
            "appRoles": [
                {
                    "allowedMemberTypes": [
                        "Application"
                    ],
                    "description": "Allows the app to read applications and service principals without a signed-in user",
                    "displayName": "Read all applications",
                    "id": "3afa6a7d-9b1a-42eb-948e-1650a849e176",
                    "isEnabled": true,
                    "origin": "Application",
                    "value": "Application.Read.All"
                }
            ],
            "oauth2PermissionScopes": [
                {
                    "adminConsentDescription": "Allows users to sign in to the app, and allows the app to read the profile of signed-in users. It also allow the app to read basic company information of signed-in users.",
                    "adminConsentDisplayName": "Sign in and read user profile",
                    "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
                    "isEnabled": true,
                    "type": "User",
                    "userConsentDescription": "Allows you to sign in to the app with your work account and let the app read your profile. It also allows the app to read basic company information.",
                    "userConsentDisplayName": "Sign you in and read your profile",
                    "value": "User.Read"
                }
            ]
        }
    ]
}

在上述截断输出中, 是 User.Read 委托权限的权限 ID,311a71cc-e848-46a1-bdf8-97ff7156d8e63afa6a7d-9b1a-42eb-948e-1650a849e176是 Azure AD Graph 中 Application.Read.All 应用程序权限的权限 ID。

步骤 2:向应用添加 Azure AD Graph 权限

以下示例调用 更新应用程序 API,将 Azure AD Graph User.ReadApplication.Read.All 委托和应用程序权限添加到由对象 ID 581088ba-83c5-4975-b8af-11d2d7a76e98标识的应用注册。

重要

若要更新 requiredResourceAccess 属性,必须传入现有权限和新权限。 仅传入新权限会覆盖并删除现有权限。

请求

PATCH https://graph.microsoft.com/v1.0/applications/581088ba-83c5-4975-b8af-11d2d7a76e98
Content-Type: application/json

{
    "requiredResourceAccess": [
        {
            "resourceAppId": "00000002-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
                    "type": "Scope"
                },
                {
                    "id": "3afa6a7d-9b1a-42eb-948e-1650a849e176",
                    "type": "Role"
                }
            ]
        }
    ]
}

响应

HTTP/1.1 204 No Content

步骤 3:验证是否已将 Azure AD Graph 权限添加到应用

通过以下方式验证应用注册是否具有在步骤 2 中添加的 Azure AD 图形 API权限:

  1. 调用 Microsoft Graph GET /application/{id} 终结点并读取 requiredResourceAccess 属性,如下所示:

    GET https://graph.microsoft.com/v1.0/applications/581088ba-83c5-4975-b8af-11d2d7a76e98?$select=id,requiredResourceAccess
    
  2. 检查Microsoft Entra 管理中心中的应用注册页。

虽然添加了 Azure AD Graph 权限,但尚未向应用授予这些权限。 许多权限需要管理员同意才能用于访问组织数据。 以全局管理员身份登录到 Microsoft Entra 管理中心,并授予管理员对应用注册权限的同意。

使用 Microsoft Graph 和任何相关 SDK 时,无需使用Microsoft Entra 管理中心,并选择 API 权限页上的“授予管理员同意 [公司] ”按钮即可向应用注册授予权限。 有关详细信息,请参阅 以编程方式授予或撤销 API 权限

使用Microsoft Entra 管理中心查找组织使用的 API

  1. 登录到 Microsoft Entra 管理中心

  2. 展开“标识>应用程序>”,选择“应用注册”。

  3. “应用注册”窗口中的“所有应用程序”选项卡下,选择要向其添加 Azure AD Graph 权限的应用。

  4. 在窗口的左窗格中,在 “管理 ”菜单组下,选择“ API 权限”。 在 “配置的权限 ”窗口中,选择“ 添加权限”。

  5. “请求 API 权限 ”窗口中,切换到 组织使用的 API 选项卡并搜索 Windows Azure Active Directory00000002-0000-0000-c000-000000000000。 从筛选的结果集中选择,以显示 Azure Active Directory Graph 权限窗口。

    Azure AD 图形 API名为 Windows Azure Active Directory,其 clientID 为 000000002-0000-0000-c000-000000000000。

  6. 选择“ 委托的权限 ”或“ 应用程序权限 ”选项卡,分别从委托权限和应用程序权限列表中选择。 选择“ 添加权限 ”,将权限添加到应用注册。

  7. 添加所需的权限后,返回到“ 配置的权限 ”窗口中,选择“ 授予管理员同意 ”,向应用注册授予 Azure AD Graph 权限。

更新Microsoft Entra 管理中心上的应用程序清单

  1. 登录到 Microsoft Entra 管理中心

  2. 展开“标识”菜单>“”应用程序>“,选择”应用注册”。

  3. “应用注册”窗口中的“所有应用程序”选项卡下,选择要向其添加 Azure AD Graph 权限的应用。

  4. 在窗口的左窗格中,在“ 管理 ”菜单组下,选择“ 清单 ”以打开一个编辑器,用于直接编辑应用注册对象的属性。

    应用注册清单文件允许编辑应用程序的属性。

  5. 仔细编辑应用清单中的 requiredResourceAccess 属性以添加以下详细信息:

    提示

    答: 可以在Microsoft Entra 管理中心上编辑应用清单,或选择“下载”在本地编辑清单,然后使用“上传”将其重新应用到应用程序。

    B. 若要详细了解如何配置 requiredResourceAccess 属性,请参阅 requiredResourceAccess 资源类型

    C. 有关 Azure AD Graph 权限 名称、ID 和类型的详细信息,请参阅 Azure AD Graph 权限参考。

    5.1. 如果未为应用分配任何 Azure AD Graph 权限,请添加 resourceAppId 属性并分配表示 Azure AD Graph 的值 00000002-0000-0000-c000-000000000000

    5.2. 添加 resourceAccess 属性并配置权限。

    以下 JSON 代码段显示了 一个 requiredResourceAccess 属性,其中 Azure AD Graph 作为资源,并分别分配了 User.ReadApplication.Read.All oauth2PermissionScope (委托的权限) 和 appRole (应用程序权限) 。

    "requiredResourceAccess": [
        {
            "resourceAppId": "00000002-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
                    "type": "Scope"
                },
                {
                    "id": "3afa6a7d-9b1a-42eb-948e-1650a849e176",
                    "type": "Role"
                }
            ]
        }
    ],
    
  6. 保存所做的更改。

  7. 返回到 “管理 ”菜单组,选择“ API 权限 ”,然后在“为应用注册 配置的权限 ”中选择“ 授予管理员同意 ”,以向应用注册授予 Azure AD Graph 权限。