Microsoft Entra IDを使用して Microsoft Graph の Intune API にアクセスする方法

Microsoft Graph APIでは、特定の API とアクセス許可ロールを使用したMicrosoft Intuneがサポートされるようになりました。 Microsoft Graph APIでは、認証とアクセス制御にMicrosoft Entra IDを使用します。
Microsoft Graph の Intune API へのアクセスには、次のものが必要です。

  • アプリケーション ID と、

    • Microsoft Entra IDと Microsoft Graph API を呼び出すアクセス許可。
    • 特定のアプリケーション タスクに関連したアクセス許可スコープ。
  • ユーザー資格情報と、

    • アプリケーションに関連付けられているMicrosoft Entra テナントにアクセスするためのアクセス許可。
    • アプリケーションのアクセス許可スコープをサポートするために必要な役割のアクセス許可。
  • Azure テナントのアプリケーション タスクを実行するためのアクセス許可をアプリに付与するエンド ユーザー。

この記事の内容:

  • Microsoft Graph APIおよび関連するアクセス許可ロールへのアクセス権を持つアプリケーションを登録する方法について説明します。

  • Intune API アクセス許可ロールについて説明します。

  • C# と PowerShell の Intune API 認証の例を示します。

  • 複数のテナントをサポートする方法について説明します。

詳細については、次を参照してください。

Microsoft Graph API を使用するアプリを登録する

Microsoft Graph API を使用するアプリを登録するには、次の作業を行います。

  1. 管理資格情報を使用してMicrosoft Intune管理センターにサインインします。

    必要に応じて、次を使用することができます。

    • テナントの管理者アカウント。
    • [ユーザー] が有効になっているテナント ユーザー アカウント は、アプリケーション設定を登録できます
  2. [すべてのサービス>M365 Microsoft Entra ID>Microsoft Entra IDアプリの登録>] を選択します

    アプリの登録 メニュー コマンド
  3. [新規登録] を選択して新しいアプリケーションを作成するか、既存のアプリケーションを選択します。 (既存のアプリケーションを選択する場合は、次の手順をスキップします)。

  4. [ アプリケーションの登録 ] ウィンドウで、次を指定します。

  5. アプリケーション ウィンドウから次の操作を行います。

    1. アプリケーション (クライアント) ID 値に注意してください。

    2. [API アクセス許可] を選択します。

  6. [API のアクセス許可] ウィンドウで、[アクセス許可>の追加][Microsoft APIMicrosoft Graph] の>順に選択します。 次に、アプリケーションに必要なアクセス許可の種類を選択します。

    アプリに必要なロールを選択するには、関連する名前の左側にチェックマークを付けます。 特定の Intune アクセス許可スコープの詳細については、「 Intune のアクセス許可スコープ」を参照してください。 その他のGraph APIアクセス許可スコープについては、「Microsoft Graph のアクセス許可リファレンス」を参照してください。

    最善の結果を得るには、アプリケーションの実装に必要な最小限の役割を選択します。

データ ウェアハウスとレポートのアクセス許可

Microsoft Entra 管理センターを使用してアプリケーションを追加する場合は、アプリケーションの要件に基づいて Intune API のアクセス許可を選択できます。

  • get_data_warehouse - この API アクセス許可を使用して、Microsoft Intuneから Intune データ ウェアハウス API へのアクセスを許可します。 詳細については、「Microsoft Intune Data Warehouseの使用」を参照してください。

パートナー ソリューション API

次の Intune API アクセス許可は、Microsoft Entra 管理センターを介してアプリケーションを追加するときに使用できます。

  • get_device_compliance - この API アクセス許可は、Microsoft Intuneからデバイスの状態とコンプライアンス情報を取得するために使用されます。 この API アクセス許可は、Network Access Control パートナーによって使用されます。 詳細については、「ネットワークAccess Control Intune との統合」を参照してください。
  • manage_partner_compliance_policy - この API アクセス許可は、Microsoft Intuneを使用してパートナー コンプライアンス ポリシーを管理するために使用されます。 この API アクセス許可を使用すると、アプリは、サインインしているユーザーなしでパートナー コンプライアンス ポリシーとそのMicrosoft Entra グループ割り当てをMicrosoft Intuneに送信できます。 これは、デバイス コンプライアンス パートナーによって使用されます。 詳細については、「 サード パーティのデバイス コンプライアンス パートナー」を参照してください。
  • pfx_cert_provider - この API アクセス許可は、特定のユーザーの PFX 証明書を Intune に送信するために使用されます。 Intune は、ユーザーが登録したすべてのデバイスに証明書を配信します。 詳細については、「 PFX Import Powershell」を参照してください。
  • scep_challenge_provider - この API アクセス許可は、証明書要求の検証のために SCEP チャレンジを Intune に送信するために使用されます。 証明機関のパートナーによって使用されます。 詳細については、「 パートナー証明機関」を参照してください。
  • update_device_attributes - この API アクセス許可は、デバイスコンプライアンスおよびモバイル脅威防御パートナーから Intune にデバイス情報を送信するために使用されます。 詳細については、「 Mobile Threat Defense と Intune および サード パーティデバイス コンプライアンス パートナーの統合」を参照してください。
  • update_device_health - この API アクセス許可は、モバイル脅威防御パートナーからデバイスの正常性と脅威の状態情報を Intune に送信するために使用されます。 詳細については、「 Mobile Threat Defense と Intune の統合」を参照してください。

これらの API アクセス許可を使用して Intune との統合に関心があるパートナーの場合は、 Microsoft Intelligent Security Association] チームに問い合わせてください。

完了したら、[ アクセス許可の追加] を選択して変更を保存します。

この時点で、次の場合もあります。

  • 資格情報を指定せずにアプリを使用するためのアクセス許可をすべてのテナント アカウントに付与することを選択します。

    これを行うために、アクセス許可を付与し、確認プロンプトで同意できます。

    アプリケーションを初めて実行すると、選択したロールを実行するためのアクセス許可をアプリに付与するように求められます。

  • テナント外のユーザーがアプリを使用できるようにします。 (これは通常、複数のテナント/組織をサポートするパートナーにのみ必要です)。

    そのためには、次を実行します。

    1. アプリケーション ウィンドウから [マニフェスト ] を選択します。

      [マニフェストの編集] ブレード
    2. 設定の値を に availableToOtherTenants 変更します true

    3. 変更内容を保存します。

アプリの一覧

Graph APIを使用しているときにアプリの一覧を要求しているときに大量のデータを受け取ると、503 サービス利用不可エラーが発生する可能性があります。 20 個以下の要素など、ページ サイズを小さくしてもう一度試してみることをお勧めします。

Intune のアクセス許可スコープ

Microsoft Entra IDと Microsoft Graph では、アクセス許可スコープを使用して、企業リソースへのアクセスを制御します。

アクセス許可スコープ ( OAuth スコープとも呼ばれます) は、特定の Intune エンティティとそのプロパティへのアクセスを制御します。 このセクションでは、Intune API 機能のアクセス許可スコープの概要を示します。

詳細情報:

Microsoft Graph にアクセス許可を付与する場合は、Intune 機能へのアクセスを制御するために、次のスコープを指定できます。次の表は、Intune API のアクセス許可スコープをまとめたものです。 最初の列は、Microsoft Intune管理センターに表示される機能の名前を示し、2 番目の列はアクセス許可スコープ名を提供します。

アクセス設定を有効にする スコープ名
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 アプリの読み取りおよび書き込み 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読み取ります

  • 次のエンティティのプロパティと状態への読み取りアクセスを許可します。

    • デバイス構成
    • デバイス コンプライアンス ポリシー
    • 通知メッセージ

DeviceManagementConfiguration.ReadWrite.All

  • アクセス設定を有効にする: デバイスの構成とポリシー Microsoft Intune読み取りおよび書き込み

  • DeviceManagementConfiguration.Read.All と同じ操作を許可します

  • アプリでは、次のエンティティを作成、割り当て、削除、変更することもできます。

    • デバイス構成
    • デバイス コンプライアンス ポリシー
    • 通知メッセージ

DeviceManagementManagedDevices.PrivilegedOperations.All

  • アクセス設定を有効にする: Microsoft Intune デバイスでユーザーに影響を与えるリモート アクションを実行する

  • マネージド デバイスで次のリモート アクションを許可します。

    • 破棄
    • ワイプ
    • パスコードのリセット/回復
    • リモート ロック
    • 紛失モードを有効/無効にする
    • クリーン PC
    • 再起動
    • 共有デバイスからユーザーを削除する

DeviceManagementManagedDevices.Read.All

  • アクセス設定を有効にする: デバイスMicrosoft Intune読み取り

  • 次のエンティティのプロパティと状態への読み取りアクセスを許可します。

    • マネージド デバイス
    • デバイス カテゴリ
    • 検出されたアプリ
    • リモート操作
    • マルウェア情報

DeviceManagementManagedDevices.ReadWrite.All

  • アクセス設定を有効にする: デバイスMicrosoft Intune読み取りおよび書き込み

  • DeviceManagementManagedDevices.Read.All と同じ操作を許可します

  • アプリでは、次のエンティティを作成、削除、変更することもできます。

    • マネージド デバイス
    • デバイス カテゴリ
  • 次のリモート アクションも許可されます。

    • デバイスの検索
    • アクティベーション ロックを無効にする
    • リモート アシスタンスを要求する

DeviceManagementRBAC.Read.All

  • アクセス設定を有効にする: RBAC 設定Microsoft Intune読み取ります

  • 次のエンティティのプロパティと状態への読み取りアクセスを許可します。

    • ロールの割り当て
    • ロールの定義
    • リソース操作

DeviceManagementRBAC.ReadWrite.All

  • アクセス設定を有効にする: RBAC 設定Microsoft Intune読み取りおよび書き込み

  • DeviceManagementRBAC.Read.All と同じ操作を許可します

  • アプリでは、次のエンティティを作成、割り当て、削除、変更することもできます。

    • ロールの割り当て
    • ロールの定義

DeviceManagementServiceConfig.Read.All

  • アクセス設定を有効にする: Microsoft Intune構成の読み取り

  • 次のエンティティのプロパティと状態への読み取りアクセスを許可します。

    • デバイス登録
    • Apple プッシュ通知証明書
    • Apple Device Enrollment Program
    • Apple ボリューム購入プログラム
    • Exchange コネクタ
    • 使用条件
    • クラウド PKI
    • ブランド化
    • モバイル脅威防御

DeviceManagementServiceConfig.ReadWrite.All

  • アクセス設定を有効にする: 構成の読み取りと書き込みMicrosoft Intune

  • DeviceManagementServiceConfig.Read.All_と同じ操作を許可します

  • アプリでは、次の Intune 機能を構成することもできます。

    • デバイス登録
    • Apple プッシュ通知証明書
    • Apple Device Enrollment Program
    • Apple ボリューム購入プログラム
    • Exchange コネクタ
    • 使用条件
    • クラウド PKI
    • ブランド化
    • モバイル脅威防御

Microsoft Entra認証の例

このセクションでは、C# および PowerShell プロジェクトにMicrosoft Entra IDを組み込む方法について説明します。

各例では、少なくともアクセス許可スコープを持つアプリケーション ID を指定する 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"
    }
  }
}

この場合は、次のことを確認します。

  • アプリケーション ID を、Microsoft Graph APIとアクセス許可スコープを使用する権限を持つユーザーにDeviceManagementManagedDevices.Read.All更新しました。

  • テナント資格情報は管理機能をサポートします。

  • コードは、表示されているサンプルに似ています。

C でMicrosoft Entra IDを認証する#

この例では、C# を使用して、Intune アカウントに関連付けられているデバイスの一覧を取得する方法を示します。

注:

Azure AD Graph APIは廃止フェーズです。 詳細については、「Microsoft Authentication Library (MSAL) と Microsoft Graph API を使用するようにアプリケーションを更新する」を参照してください。

  1. Visual Studio を起動し、新しい Visual C# コンソール アプリ (.NET Framework) プロジェクトを作成します。

  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 を呼び出すように Main を更新します。

    string devices = GetMyManagedDevices().GetAwaiter().GetResult();
    Console.WriteLine(devices);
    
  8. プログラムをコンパイルして実行します。

最初にプログラムを実行すると、2 つのプロンプトが表示されます。 1 つ目は資格情報を要求し、2 つ目は要求のアクセス許可を 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 の例に関するページを参照してください。

複数のテナントとパートナーをサポートする

organizationが独自の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/";