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 認証の例を示します。
複数のテナントをサポートする方法について説明します。
詳細については、次を参照してください。
- OAuth 2.0 と Microsoft Entra IDを使用して Web アプリケーションへのアクセスを承認する
- Microsoft Entra認証の概要
- アプリケーションとMicrosoft Entra IDの統合
- OAuth 2.0 について
Microsoft Graph API を使用するアプリを登録する
Microsoft Graph API を使用するアプリを登録するには、次の作業を行います。
管理資格情報を使用してMicrosoft Intune管理センターにサインインします。
必要に応じて、次を使用することができます。
- テナントの管理者アカウント。
- [ユーザー] が有効になっているテナント ユーザー アカウント は、アプリケーション設定を登録できます 。
[すべてのサービス>M365 Microsoft Entra ID>Microsoft Entra ID>アプリの登録] を選択します。
[新規登録] を選択して新しいアプリケーションを作成するか、既存のアプリケーションを選択します。 (既存のアプリケーションを選択する場合は、次の手順をスキップします)。
[ アプリケーションの登録 ] ウィンドウで、次を指定します。
アプリケーションの 名前 (ユーザーがサインインするときに表示されます)。
サポートされているアカウントの種類。
リダイレクト URI 値。 この値はオプションです。
注:
Azure AD Graph APIは廃止フェーズです。 詳細については、「Microsoft Authentication Library (MSAL) と Microsoft Graph API を使用するようにアプリケーションを更新する」を参照してください。
詳細については、「Microsoft Entra IDの認証シナリオ」を参照してください。
アプリケーション ウィンドウから次の操作を行います。
アプリケーション (クライアント) ID 値に注意してください。
[API アクセス許可] を選択します。
[ API のアクセス許可 ] ウィンドウで、[ アクセス許可の追加>Microsoft API>Microsoft Graph] を選択します。 次に、アプリケーションに必要なアクセス許可の種類を選択します。
アプリに必要なロールを選択するには、関連する名前の左側にチェックマークを付けます。 特定のIntuneアクセス許可スコープの詳細については、「Intuneアクセス許可スコープ」を参照してください。 その他のGraph 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 アクセス許可は、Network Access Control パートナーによって使用されます。 詳細については、「ネットワークAccess ControlとIntuneの統合」を参照してください。
- manage_partner_compliance_policy - この API アクセス許可は、Microsoft Intuneを使用してパートナー コンプライアンス ポリシーを管理するために使用されます。 この API アクセス許可を使用すると、アプリは、サインインしているユーザーなしでパートナー コンプライアンス ポリシーとそのMicrosoft Entra グループ割り当てをMicrosoft Intuneに送信できます。 これは、デバイス コンプライアンス パートナーによって使用されます。 詳細については、「 サード パーティのデバイス コンプライアンス パートナー」を参照してください。
- pfx_cert_provider - この API アクセス許可は、特定のユーザーのIntuneに PFX 証明書を送信するために使用されます。 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] チームに問い合わせてください。
完了したら、[ アクセス許可の追加] を選択して変更を保存します。
この時点で、次の場合もあります。
資格情報を指定せずにアプリを使用するためのアクセス許可をすべてのテナント アカウントに付与することを選択します。
これを行うために、アクセス許可を付与し、確認プロンプトで同意できます。
アプリケーションを初めて実行すると、選択したロールを実行するためのアクセス許可をアプリに付与するように求められます。
テナント外のユーザーがアプリを使用できるようにします。 (これは通常、複数のテナント/組織をサポートするパートナーにのみ必要です)。
そのために、次の操作を実行します。
アプリケーション ウィンドウから [マニフェスト ] を選択します。
availableToOtherTenants
設定の値をtrue
に変更します。変更内容を保存します。
アプリの一覧
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を組み込む方法について説明します。
各例では、少なくとも 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 でMicrosoft Entra IDを認証する#
この例では、C# を使用して、Intune アカウントに関連付けられているデバイスの一覧を取得する方法を示します。
注:
Azure AD Graph APIは廃止フェーズです。 詳細については、「Microsoft Authentication Library (MSAL) と Microsoft Graph API を使用するようにアプリケーションを更新する」を参照してください。
Visual Studio を起動し、新しい Visual C# コンソール アプリ (.NET Framework) プロジェクトを作成します。
プロジェクトの名前を入力し、必要に応じてその他の詳細を指定します。
ソリューション エクスプローラーを使用して、Microsoft MSAL NuGet パッケージをプロジェクトに追加します。
- ソリューション エクスプローラーを右クリックします。
- [ NuGet パッケージの管理] を選択します。..>参照します。
- [
Microsoft.Identity.Client
] を選択し、[ インストール] を選択します。
Program.csの先頭に次のステートメントを追加します。
using Microsoft.Identity.Client; using System.Net.Http;
承認ヘッダーを作成するメソッドを追加します。
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();
前に説明したように、少なくとも
DeviceManagementManagedDevices.Read.All
アクセス許可スコープが付与されている値と一致するように、application_ID
の値を変更してください。デバイスの一覧を取得するメソッドを追加します。
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"); }
GetMyManagedDevices を呼び出すように Main を更新します。
string devices = GetMyManagedDevices().GetAwaiter().GetResult(); Console.WriteLine(devices);
プログラムをコンパイルして実行します。
最初にプログラムを実行すると、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 PowerShell と Intune PowerShell の例に関するページを参照してください。
複数のテナントとパートナーをサポートする
organizationが独自のMicrosoft Entra テナントを持つ組織をサポートしている場合は、クライアントがそれぞれのテナントでアプリケーションを使用できるようにする必要があります。
そのために、次の操作を実行します。
クライアント アカウントがターゲット Microsoft Entra テナントに存在することを確認します。
テナント アカウントでユーザーがアプリケーションを登録することを許可していることを確認します (「 ユーザー設定」を参照)。
各テナント間の関係を確立します。
これを行うには、次のいずれかを行います。
a. Microsoft パートナー センターを使用して、クライアントとそのメール アドレスとの関係を定義します。
b. テナントのゲストになるようにユーザーを招待します。
テナントのゲストにユーザーを招待するには:
[クイック タスク] パネルから [ゲスト ユーザーの追加] を選択します。
クライアントのメール アドレスを入力し、(必要に応じて) 招待用にパーソナライズされたメッセージを追加します。
[ 招待] を選択します。
これにより、ユーザーに招待が送信されます。
招待を承諾するには、ユーザーが [開始] リンクを選択する必要があります。
リレーションシップが確立されたとき (または招待が承諾された場合)、ユーザー アカウントを ディレクトリ ロールに追加します。
必要に応じて、他のロールにユーザーを追加してください。 たとえば、ユーザーが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/";