如何使用 Microsoft Entra ID 存取 Microsoft Graph 中的 Intune API

Microsoft 圖形 API 現在支援具有特定 API 和權限角色的 Microsoft Intune。 Microsoft 圖形 API 使用 Microsoft Entra ID 進行驗證和存取控制。 存取 Microsoft Graph 中的 Intune API 需要:

  • 具有下列的應用程式識別碼:

    • 呼叫 Microsoft Entra ID 和 Microsoft Graph API 的權限。
    • 與特定應用程式工作相關的權限範圍。
  • 具有下列項目的使用者認證:

    • 存取與應用程式相關聯之 Microsoft Entra 租用戶的權限。
    • 支援應用程式權限範圍所需的角色權限。
  • 使用者將權限授與應用程式,以針對其 Azure 租用戶執行應用程式工作。

本文內容:

  • 顯示如何註冊應用程式以存取 Microsoft 圖形 API 和相關權限角色。

  • 描述 Intune API 權限角色。

  • 提供 C# 和 PowerShell 的 Intune API 驗證範例。

  • 說明如何支援多個租用戶。

若要深入了解,請參閱:

註冊應用程式以使用 Microsoft 圖形 API

若要註冊應用程式以使用 Microsoft 圖形 API:

  1. 使用系統管理認證登入 Microsoft Entra 系統管理中心

    在適當情況下,您可以使用:

    • 租用戶系統管理員帳戶。
    • 已啟用 [使用者可以註冊應用程式 ] 設定的租用戶使用者帳戶。
  2. 在系統管理中心中,展開 [身分識別>應用程式],然後選取 [應用程式註冊]。

    Entra 系統管理中心應用程式註冊功能表位置的螢幕擷取畫面。

  3. 選擇 [新增註冊 ] 以建立新應用程式,或選擇現有的應用程式。 (如果您選擇現有的應用程式,請略過下一個步驟。)

  4. [註冊應用程式 ] 窗格中,指定下列項目:

  5. 選取 [ 註冊] 以新增您的新應用程式。

    選取 [ 註冊] 即表示您同意 Microsoft 平台原則

  6. 從應用程式的應用程式窗格:

    1. 記下 應用程式 (用戶端) 識別碼 值。

    2. 然後,從導覽功能表中選取 API 權限

  7. API 權限 窗格:

    1. 選取新增 權限,然後在 [Microsoft API ] 索引標籤上,選取 [Microsoft Graph ] 磚。

    2. 選取 [ 應用程式權限 ] 選項以顯示所有可用的權限,然後選取應用程式所需的權限類型。

    3. 在相關名稱左側打核記號,以選擇應用程式所需的角色。 若要了解特定的 Intune 權限範圍,請參閱 Intune 權限範圍。 若要了解其他 圖形 API 權限範圍,請參閱 Microsoft Graph 權限參考

    為了獲得最佳結果,請選擇實作應用程式所需的最少角色。

資料倉儲和報告權限

透過 Microsoft Entra 系統管理中心新增應用程式時,您可以根據應用程式的需求選擇 Intune API 權限。

  • get_data_warehouse - 使用此 API 權限,授與從 Microsoft Intune 存取 Intune 資料倉儲 API 的權限。 如需詳細資訊,請參閱使用Microsoft Intune Data Warehouse

合作夥伴解決方案 API

透過 Microsoft Entra 系統管理中心新增應用程式時,可以使用下列 Intune API 權限:

  • get_device_compliance - 此 API 權限可用來從 Microsoft Intune 取得裝置狀態和合規性資訊。 此 API 權限由網路存取控制合作夥伴使用。 如需詳細資訊,請參閱 網路存取控制與 Intune 整合
  • manage_partner_compliance_policy - 此 API 權限可用來管理具有 Microsoft Intune 的合作夥伴合規性原則。 此 API 權限可讓應用程式在沒有登入使用者的情況下,將合作夥伴合規性原則及其 Microsoft Entra 群組指派傳送給 Microsoft Intune。 它由裝置合規性合作夥伴使用。 如需詳細資訊,請參閱 協力廠商裝置合規性合作夥伴
  • pfx_cert_provider - 此 API 權限可用來將特定使用者的 PFX 憑證傳送給Intune。 Intune 會將憑證傳遞至使用者註冊的所有裝置。 如需詳細資訊,請參閱 PFX 匯入 Powershell
  • scep_challenge_provider - 此 API 權限可用來將 SCEP 挑戰傳送給 Intune,以進行憑證要求驗證。 由憑證授權單位單位合作夥伴使用。 如需詳細資訊,請參閱合作夥伴 憑證授權單位
  • update_device_attributes - 此 API 權限可用來將裝置資訊傳送給裝置合規性和行動裝置威脅防禦合作夥伴的Intune。 如需詳細資訊,請參閱 行動裝置威脅防禦與 Intune協力廠商裝置合規性合作夥伴整合。
  • update_device_health - 此 API 權限可用來將裝置健康情況和威脅狀態資訊從行動威脅防禦合作夥伴傳送給Intune。 如需詳細資訊,請參閱 行動威脅防禦與 Intune 整合

如果您是有興趣使用這些 API 權限與 Intune 整合的合作夥伴,請連絡 Microsoft 情報安全性聯盟] 小組以取得資訊。

完成後,選擇 Add permissions 以儲存變更。

此時,您還可以:

  • 選擇授予所有租用戶帳戶權限,以在不提供認證的情況下使用該應用程式。

    若要這樣做,您可以授與權限並接受確認提示。

    當您第一次執行應用程式時,系統會提示您授與應用程式執行所選角色的權限。

  • 讓應用程式可供租用戶外部的使用者使用。 (這通常只有支援多個租用戶/組織的合作夥伴才需要。)

    若要這麼做︰

    1. 從應用程式窗格中選擇 [資訊清單 ]。

    2. 將設定值 availableToOtherTenants 變更為 true

    3. 儲存變更。

應用程式清單

如果您在使用 圖形 API 時要求應用程式清單時收到大量資料,可能會遇到 503 服務無法使用錯誤。 建議您使用較小的頁面大小再試一次,例如 20 個或更少的元素。

Intune 權限範圍

Microsoft Entra ID 和 Microsoft Graph 使用權限範圍來控制公司資源的存取權。

權限範圍 (也稱為 OAuth 範圍) 控制對特定Intune實體及其屬性的存取權。 本節摘要說明 Intune API 功能的權限範圍。

若要深入了解:

當您將權限授與 Microsoft Graph 時,您可以指定下列範圍來控制 Intune 功能的存取權: 下表摘要說明 Intune API 權限範圍。 第一欄會顯示在 Microsoft Intune 系統管理中心中所顯示的功能名稱,第二欄則會提供權限範圍名稱。

啟用存取 設定 範圍名稱
在 Microsoft Intune 裝置上執行影響使用者的遠端動作 DeviceManagementManagedDevices.PrivilegedOperations.All
讀取及寫入 Microsoft Intune 裝置 DeviceManagementManagedDevices.ReadWrite.All
讀取 Microsoft Intune 裝置 DeviceManagementManagedDevices.Read.All
讀取和寫入 Microsoft Intune RBAC 設定 DeviceManagementRBAC.ReadWrite.All
閱讀 Microsoft Intune RBAC 設定 DeviceManagementRBAC.Read.All
朗讀 Microsoft Intune 指令碼 DeviceManagementScripts.Read.All
讀取和寫入 Microsoft Intune 指令碼 DeviceManagementScripts.ReadWrite.All
讀取和寫入 Microsoft Intune 應用程式 DeviceManagementApps.ReadWrite.All
閱讀 Microsoft Intune 應用程式 DeviceManagementApps.Read.All
讀取和寫入 Microsoft Intune 裝置設定和原則 DeviceManagementConfiguration.ReadWrite.All
閱讀 Microsoft Intune 裝置設定和原則 DeviceManagementConfiguration.Read.All
讀取和寫入 Microsoft Intune 設定 DeviceManagementServiceConfig.ReadWrite.All
閱讀 Microsoft Intune 設定 DeviceManagementServiceConfig.Read.All

表格會列出顯示在 Microsoft Intune 系統管理中心的設定。 下列各節會依字母順序說明範圍。

目前,所有 Intune 權限範圍都需要系統管理員存取權。 這表示您在執行存取 Intune API 資源的應用程式或指令碼時,需要對應的認證。

DeviceManagementApps.Read.All

  • 啟用存取設定:讀取 Microsoft Intune 應用程式

  • 允許讀取存取下列實體屬性和狀態:

    • 用戶端應用程式
    • 行動裝置應用程式類別
    • 應用程式防護原則
    • 應用程式設定

DeviceManagementApps.ReadWrite.All

  • 啟用存取設定:讀取和寫入 Microsoft Intune 應用程式

  • 允許與 DeviceManagementApps.Read.All 相同的作業

  • 也允許變更下列實體:

    • 用戶端應用程式
    • 行動裝置應用程式類別
    • 應用程式防護原則
    • 應用程式設定

DeviceManagementConfiguration.Read.All

  • 啟用存取設定:閱讀 Microsoft Intune 裝置設定和原則

  • 允許讀取存取下列實體屬性和狀態:

    • 裝置設定
    • 裝置合規性原則
    • 通知訊息

注意事項

自 2025 年 7 月 31 日起,Microsoft Graph 已將下列 API 呼叫的 DeviceManagementConfiguration.Read.All 權限取代為 DeviceManagementScripts.ReadWrite.All 的使用:

  • ~/deviceManagement/deviceShellScripts
  • ~/deviceManagement/deviceHealthScripts
  • ~/deviceManagement/deviceComplianceScripts
  • ~/deviceManagement/deviceCustomAttributeShellScripts
  • ~/deviceManagement/deviceManagementScripts

DeviceManagementConfiguration.ReadWrite.All

  • 啟用存取設定:讀取和寫入 Microsoft Intune 裝置設定和原則

  • 允許與 DeviceManagementConfiguration.Read.All 相同的作業

  • 應用程式也可以建立、指派、刪除及變更下列實體:

    • 裝置設定
    • 裝置合規性原則
    • 通知訊息

注意事項

自 2025 年 7 月 31 日起,Microsoft Graph 已將下列 API 呼叫的 DeviceManagementConfiguration.ReadWrite.All 權限取代為 DeviceManagementScripts.ReadWrite.All 的使用:

  • ~/deviceManagement/deviceShellScripts
  • ~/deviceManagement/deviceHealthScripts
  • ~/deviceManagement/deviceComplianceScripts
  • ~/deviceManagement/deviceCustomAttributeShellScripts
  • ~/deviceManagement/deviceManagementScripts

DeviceManagementManagedDevices.PrivilegedOperations.All

  • 啟用 Access 設定:在 Microsoft Intune 裝置上執行影響使用者的遠端動作

  • 允許在受管理的裝置上執行下列遠端動作:

    • 淘汰
    • 擦去
    • 重設/復原密碼
    • 遠端鎖定
    • 啟用/停用遺失模式
    • 乾淨的電腦
    • 重新開機
    • 從共用裝置中刪除使用者

DeviceManagementManagedDevices.Read.All

  • 啟用 Access 設定:讀取 Microsoft Intune 裝置

  • 允許讀取存取下列實體屬性和狀態:

    • 受管理的裝置
    • 裝置類別
    • 偵測到的應用程式
    • 遠端動作
    • 惡意程式碼資訊

DeviceManagementManagedDevices.ReadWrite.All

  • 啟用 Access 設定:讀取和寫入 Microsoft Intune 裝置

  • 允許與 DeviceManagementManagedDevices.Read.All 相同的作業

  • 應用程式也可以建立、刪除及變更下列實體:

    • 受管理的裝置
    • 裝置類別
  • 還允許以下遠端操作:

    • 尋找裝置
    • 停用啟用鎖定
    • 要求遠端協助

DeviceManagementRBAC.Read.All

  • 啟用存取設定:讀取 Microsoft Intune RBAC 設定

  • 允許讀取存取下列實體屬性和狀態:

    • 角色分配
    • 角色定義
    • 資源作業

DeviceManagementRBAC.ReadWrite.All

  • 啟用 Access 設定:讀取和寫入 Microsoft Intune RBAC 設定

  • 允許與 DeviceManagementRBAC.Read.All 相同的作業

  • 應用程式也可以建立、指派、刪除及變更下列實體:

    • 角色分配
    • 角色定義

DeviceManagementScripts.Read.All

  • 啟用 Access 設定:讀取 Microsoft Intune 指令碼

  • 應用程式可以檢視 (讀取) 指令碼,特別是:

    • 裝置殼層指令碼
    • 裝置健康情況指令碼
    • 裝置合規性指令碼
    • 裝置自訂屬性殼層指令碼
    • 裝置管理指令碼

DeviceManagementScripts.ReadWrite.All

  • 啟用 Access 設定:讀取和寫入 Microsoft Intune 指令碼
    允許與 DeviceManagementScripts.Read.All 相同的作業

  • 應用程式可以建立、更新或刪除指令碼,特別是:

    • 裝置殼層指令碼
    • 裝置健康情況指令碼
    • 裝置合規性指令碼
    • 裝置自訂屬性殼層指令碼
    • 裝置管理指令碼

DeviceManagementServiceConfig.Read.All

  • 啟用 Access 設定:讀取 Microsoft Intune 設定

  • 允許讀取存取下列實體屬性和狀態:

    • 裝置註冊
    • Apple 推播通知憑證
    • Apple 裝置註冊計畫
    • Apple 大量購買計劃
    • Exchange Connector
    • 條款和條件
    • 雲端 PKI
    • 品牌
    • 行動威脅防禦應用程式

DeviceManagementServiceConfig.ReadWrite.All

  • 啟用 Access 設定:讀取和寫入 Microsoft Intune 設定

  • 允許與DeviceManagementServiceConfig.Read.All_相同的作業

  • 應用程式也可以設定下列 Intune 功能:

    • 裝置註冊
    • Apple 推播通知憑證
    • Apple 裝置註冊計畫
    • Apple 大量購買計劃
    • Exchange Connector
    • 條款和條件
    • 雲端 PKI
    • 品牌
    • 行動威脅防禦應用程式

Microsoft Entra 驗證範例

本節說明如何將 Microsoft Entra ID 合併至您的 C# 和 PowerShell 專案。

在每個範例中,您都需要指定應用程式識別碼,其權限範圍至少 (先前) 所討論。DeviceManagementManagedDevices.Read.All

測試任一範例時,您可能會收到類似下列內容的 HTTP 狀態 403 (禁止) 錯誤:

{
  "error": {
    "code": "Forbidden",
    "message": "Application is not authorized to perform this operation - Operation ID " +
       "(for customer support): 00000000-0000-0000-0000-000000000000 - " +
       "Activity ID: cc7fa3b3-bb25-420b-bfb2-1498e598ba43 - " +
       "Url: https://example.manage.microsoft.com/" +
       "Service/Resource/RESTendpoint?" +
       "api-version=2017-03-06 - CustomApiErrorPhrase: ",
    "innerError": {
      "request-id": "00000000-0000-0000-0000-000000000000",
      "date": "1980-01-0112:00:00"
    }
  }
}

如果發生這種情況,請確認:

  • 您已將應用程式識別碼更新為已獲授權使用 Microsoft 圖形 API 和DeviceManagementManagedDevices.Read.All權限範圍的識別碼。

  • 您的租用戶認證支援系統管理功能。

  • 您的程式碼與顯示的範例類似。

在 C 中驗證 Microsoft Entra ID#

此範例示範如何使用 C# 擷取與您 Intune 帳戶相關聯的裝置清單。

注意事項

Azure AD 圖形 API 正處於淘汰階段。 如需詳細資訊,請參閱更新您的應用程式以使用 MSAL) 和Microsoft圖形 API (Microsoft 驗證程式庫

  1. 啟動 Visual Studio,然後在專案 (.NET Framework) 建立新的 Visual C# 主控台應用程式。

  2. 輸入專案的名稱,並視需要提供其他詳細資料。

    在 Visual Studio 中建立 C# 主控台應用程式專案
  3. 使用方案總管將 Microsoft MSAL NuGet 套件新增至專案:

    1. 以滑鼠右鍵按一下 [方案總管]。
    2. 選擇 [管理 NuGet 套件...]>瀏覽
    3. 選取 Microsoft.Identity.Client ,然後選擇 安裝
  4. 將下列陳述式新增至 Program.cs的頂端:

    using Microsoft.Identity.Client;
    using System.Net.Http;
    
  5. 新增建立授權標頭的方法:

    private static async Task<string> GetAuthorizationHeader()
    {
        string applicationId = "<Your Application ID>";
        string authority = "https://login.microsoftonline.com/common/";
        Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob");
        AuthenticationContext context = new AuthenticationContext(authority);
        AuthenticationResult result = await context.AcquireTokenAsync(
            "https://graph.microsoft.com",
            applicationId, redirectUri,
            new PlatformParameters(PromptBehavior.Auto));
        return result.CreateAuthorizationHeader();
    

    請記得將 的 application_ID 值變更為至少 DeviceManagementManagedDevices.Read.All 符合授與權限範圍的值,如先前所述。

  6. 新增擷取裝置清單的方法:

    private static async Task<string> GetMyManagedDevices()
    {
        string authHeader = await GetAuthorizationHeader();
        HttpClient graphClient = new HttpClient();
        graphClient.DefaultRequestHeaders.Add("Authorization", authHeader);
        return await graphClient.GetStringAsync(
            "https://graph.microsoft.com/beta/me/managedDevices");
    }
    
  7. 更新 主要 以呼叫 GetMyManagedDevices

    string devices = GetMyManagedDevices().GetAwaiter().GetResult();
    Console.WriteLine(devices);
    
  8. 編譯並執行您的程式。

當您第一次執行程式時,應該會收到兩個提示。 第一個會要求您的憑證,第二個會授與請求的 managedDevices 許可。

作為參考,以下是完成的程序:

using Microsoft.Identity.Client;
using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace IntuneGraphExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string devices = GetMyManagedDevices().GetAwaiter().GetResult();
            Console.WriteLine(devices);
        }

        private static async Task<string> GetAuthorizationHeader()
        {
            string applicationId = "<Your Application ID>";
            string authority = "https://login.microsoftonline.com/common/";
            Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob");
            AuthenticationContext context = new AuthenticationContext(authority);
            AuthenticationResult result = await context.AcquireTokenAsync("https://graph.microsoft.com", applicationId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
            return result.CreateAuthorizationHeader();
        }

        private static async Task<string> GetMyManagedDevices()
        {
            string authHeader = await GetAuthorizationHeader();
            HttpClient graphClient = new HttpClient();
            graphClient.DefaultRequestHeaders.Add("Authorization", authHeader);
            return await graphClient.GetStringAsync("https://graph.microsoft.com/beta/me/managedDevices");
        }
    }
}

使用 Microsoft Graph PowerShell 驗證 Microsoft Entra ID

PowerShell 指令碼可以使用 Microsoft Graph PowerShell 模組進行驗證。 若要深入了解,請參閱 Microsoft Graph PowerShellIntune PowerShell 範例

支援多個租用戶和合作夥伴

如果您的組織支援擁有自己的 Microsoft Entra 租用戶的組織,您可能需要允許用戶端搭配其各自的租用戶使用您的應用程式。

若要這麼做︰

  1. 確認用戶端帳戶存在於目標 Microsoft Entra 租用戶中。

  2. 確認您的租用戶帳戶允許使用者註冊應用程式 (查看 [使用者設定 ]) 。

  3. 在每個租用戶之間建立關係。

    若要這麼做,請執行下列任一動作:

    a. 使用 Microsoft 合作夥伴中心 定義與您的客戶及其電子郵件地址的關係。

    b. 邀請使用者成為您租用戶的來賓。

若要邀請使用者成為租用戶的來賓:

  1. [快速任務] 面板中選擇 [新增來賓使用者]。

  2. 輸入委託人的電子郵件地址, (選擇性地) 邀請新增個人化訊息。

  3. 選擇 [邀請]。

這會傳送邀請給使用者。

使用者必須選擇 [ 開始使用 ] 連結才能接受您的邀請。

建立關聯 (或您的邀請已) 接受時,請將使用者帳戶新增至 目錄角色

請記得視需要將使用者新增至其他角色。 例如,若要允許使用者管理 Intune 設定,他們至少必須是 Intune 服務系統管理員

或者:

  • https://admin.microsoft.com來指派 Intune 授權給您的使用者帳戶。

  • 更新應用程式程式碼,以驗證至用戶端的 Microsoft Entra 租用戶網域,而不是您自己的網域。

    例如,假設您的租用戶網域是 contosopartner.onmicrosoft.com ,而用戶端的租用戶網域是 northwind.onmicrosoft.com,您可以更新代碼以向用戶端的租用戶進行身份驗證。

    若要在根據先前範例的 C# 應用程式中執行此動作,您需要變更變數的 authority 值:

    string authority = "https://login.microsoftonline.com/common/";
    

    這一行變更為

    string authority = "https://login.microsoftonline.com/northwind.onmicrosoft.com/";