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

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

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

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

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

この記事の内容:

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

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

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

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

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

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

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

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

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

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

    The App registrations menu command
  3. [新規登録] を選択して新しいアプリケーションを作成するか、既存のアプリケーションを選択します。 (既存のアプリケーションを選択する場合は、次の手順をスキップしてください)。

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

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

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

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

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

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

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

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

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

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

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

Azure Active Directory管理センターを使用してアプリケーションを追加する場合、次のIntune API アクセス許可を使用できます。

  • get_device_compliance - この API アクセス許可は、Microsoft Intuneからデバイスの状態とコンプライアンス情報を取得するために使用されます。 この API アクセス許可は、ネットワーク Access Control パートナーによって使用されます。 詳細については、「Intuneとのネットワーク Access Control統合」を参照してください。
  • manage_partner_compliance_policy - この API アクセス許可は、Microsoft Intuneを使用してパートナー コンプライアンス ポリシーを管理するために使用されます。 この API アクセス許可により、アプリは、サインインしているユーザーなしでパートナー コンプライアンス ポリシーとそのAzure AD グループの割り当てをMicrosoft Intuneに送信できます。 デバイス コンプライアンス パートナーによって使用されます。 詳細については、「 サード パーティのデバイス コンプライアンス パートナー」を参照してください。
  • pfx_cert_provider - この API アクセス許可は、特定のユーザーのIntuneに PFX 証明書を送信するために使用されます。 Intuneは、ユーザーが登録したすべてのデバイスに証明書を配信します。 詳細については、「 PFX Import Powershell」を参照してください。
  • scep_challenge_provider - この API アクセス許可は、証明書要求の検証のために SCEP チャレンジをIntuneに送信するために使用されます。 これは、証明機関のパートナーによって使用されます。 詳細については、「 パートナー証明機関」を参照してください。
  • send_data_usage - この API アクセス許可は、通信費管理のしきい値に基づいてデバイスのポリシー変更をトリガーするために使用されます。 通信費管理パートナーの統合に使用されます。 詳細については、「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. アプリケーション ウィンドウから [マニフェスト ] を選択します。

      The Edit manifest blade
    2. 設定trueの値を availableToOtherTenants .

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

アクセス許可スコープをIntuneする

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

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

詳細情報:

Microsoft Graphにアクセス許可を付与する場合は、次のスコープを指定して、Intune機能へのアクセスを制御できます。次の表は、Intune API アクセス許可スコープをまとめたものです。 最初の列には、Microsoft エンドポイント マネージャー管理センターに表示される機能の名前が表示され、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 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 デバイス登録プログラム
    • Apple ボリューム購入プログラム
    • Exchange コネクタ
    • 使用条件
    • 通信費管理
    • クラウド PKI
    • ブランド化
    • モバイル脅威防御

DeviceManagementServiceConfig.ReadWrite.All

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

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

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

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

Azure AD認証の例

このセクションでは、C# プロジェクトと PowerShell プロジェクトにAzure ADを組み込む方法について説明します。

各例では、少なくとも DeviceManagementManagedDevices.Read.All アクセス許可スコープ (前述) を持つアプリケーション ID を指定する必要があります。

どちらの例をテストしても、次のような 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 でAzure ADを認証する#

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

注意

Azure Active Directory (Azure AD) 認証ライブラリ (ADAL) とAzure AD Graph APIは非推奨になります。 詳細については、「Microsoft Authentication Library (MSAL) と Microsoft Graph API を使用するようにアプリケーションを更新する」を参照してください。

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

  2. プロジェクトの名前を入力し、必要に応じてその他の詳細を指定します。

    Creating a C# console app project in Visual Studio
  3. ソリューション エクスプローラーを使用して、Microsoft MSAL NuGet パッケージをプロジェクトに追加します。

    1. ソリューション エクスプローラーを右クリックします。
    2. [NuGet パッケージの管理]を選択します。.. >参照します
    3. [インストール] を選択Microsoft.IdentityModel.Clients.ActiveDirectoryして選択します。
    Selecting the Azure AD identity model module
  4. Program.cs の先頭に次のステートメントを追加します。

    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    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. プログラムをコンパイルして実行します。

プログラムを初めて実行すると、2 つのプロンプトが表示されます。 1 つ目は資格情報を要求し、2 つ目は要求に対するアクセス許可を managedDevices 付与します。

参考までに、完成したプログラムを次に示します。

using Microsoft.IdentityModel.Clients.ActiveDirectory;
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");
        }
    }
}

Azure ADの認証 (PowerShell)

PowerShell スクリプトでは、認証に AzureAD PowerShell モジュールを使用できます。 詳細については、PowerShell バージョン 2 Azure Active Directoryと powerShell例Intune参照してください。

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

組織が独自のAzure ADテナントを持つ組織をサポートしている場合は、クライアントがそれぞれのテナントでアプリケーションを使用することを許可することができます。

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

  1. クライアント アカウントがターゲット Azure AD テナントに存在することを確認します。

  2. テナント アカウントでユーザーがアプリケーションを登録できるかどうかを確認します ( ユーザー設定 を参照)。

  3. 各テナント間にリレーションシップを確立します。

    これを行うには、次のいずれかを行います。

    a. Microsoft パートナー センターを使用して、クライアントとその電子メール アドレスとの関係を定義します。

    b. テナントのゲストになるようにユーザーを招待します。

ユーザーをテナントのゲストに招待するには、次の手順に従います。

  1. [クイック タスク**] パネルで [ゲスト ユーザーの追加**] を選択します。

    Use Quick Tasks to add a guest user
  2. クライアントのメール アドレスを入力し、(必要に応じて) 招待用に個人用のメッセージを追加します。

    Inviting an external user as a guest
  3. [ 招待] を選択します。

これにより、ユーザーに招待が送信されます。

A sample guest invitation

ユーザーは、招待を承諾するために はじめに リンクを選択する必要があります。

リレーションシップが確立された (または招待が承諾された) 場合は、 ディレクトリ ロール にユーザー アカウントを追加します。

必要に応じて、ユーザーを他のロールに追加することを忘れないでください。 たとえば、ユーザーがIntune設定を管理できるようにするには、グローバル管理者 または Intune サービス管理者 である必要があります。

また、

  • Intune ライセンスをユーザー アカウントに割り当てる場合に使用https://admin.microsoft.comします。

  • アプリケーション コードを更新して、独自のドメインではなく、クライアントのAzure AD テナント ドメインに対して認証します。

    たとえば、テナント ドメインが contosopartner.onmicrosoft.com クライアントのテナント ドメインであり、クライアントのテナント ドメインが northwind.onmicrosoft.comクライアントのテナントに対して認証するようにコードを更新するとします。

    前の例に基づいて C# アプリケーションでこれを行うには、変数の値を authority 変更します。

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

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