Azure AD を使用して Microsoft Graph の Intune API にアクセスする方法How to use Azure AD to access the Intune APIs in Microsoft Graph

Microsoft Graph API が Microsoft Intune に対応し、固有の API とアクセス許可の役割を利用できるようになりました。The Microsoft Graph API now supports Microsoft Intune with specific APIs and permission roles. Microsoft Graph API は、認証とアクセスの制御に Azure Active Directory (Azure AD) を使用します。The Microsoft Graph API uses Azure Active Directory (Azure AD) for authentication and access control.
Microsoft Graph の Intune API へのアクセスには、以下のものが必要です。Access to the Intune APIs in Microsoft Graph requires:

  • アプリケーション ID と、An application ID with:

    • Azure AD および Microsoft Graph API を呼び出すアクセス許可。Permission to call Azure AD and the Microsoft Graph APIs.
    • 特定のアプリケーション タスクに関連したアクセス許可スコープ。Permission scopes relevant to the specific application tasks.
  • ユーザー資格情報と、User credentials with:

    • アプリケーションに関連付けられている Azure AD テナントへのアクセス許可。Permission to access the Azure AD tenant associated with the application.
    • アプリケーションのアクセス許可スコープをサポートするために必要な役割のアクセス許可。Role permissions required to support the application permission scopes.
  • Azure テナントのアプリケーション タスク実行に必要なアクセス許可をアプリに付与するエンド ユーザー。The end user to grant permission to the app to perform applications tasks for their Azure tenant.

この記事の内容:This article:

  • Microsoft Graph API と関連するアクセス許可の役割にアクセスできるアプリケーションを登録する方法を示します。Shows how to register an application with access to the Microsoft Graph API and relevant permission roles.

  • Intune API のアクセス許可の役割について説明します。Describes the Intune API permission roles.

  • C# および PowerShell の Intune API 認証例を提供します。Provides Intune API authentication examples for C# and PowerShell.

  • 複数のテナントをサポートする方法について説明します。Describes how to support multiple tenants.

詳細については、次を参照してください。To learn more, see:

Microsoft Graph API を使用するアプリを登録するRegister apps to use the Microsoft Graph API

Microsoft Graph API を使用するアプリを登録するには、次の作業を行います。To register an app to use Microsoft Graph API:

  1. 管理者資格情報を使用して Intune にサインインします。Sign in to Intune using administrative credentials.

    必要に応じて、次を使用することができます。As appropriate, you may use:

    • テナントの管理者アカウント。The tenant admin account.
    • [ユーザーはアプリケーションを登録できる] の設定が有効になっている、テナントのユーザー アカウント。A tenant user account with the Users can register applications setting enabled.
  2. メニューで、 [Azure Active Directory] > [アプリの登録] の順に選択します。From the menu, choose Azure Active Directory > App Registrations.

    The App registrations menu command
  3. [新しいアプリケーションの登録] を選択して新しいアプリケーションを作成するか、または既存のアプリケーションを選択します。Either choose New application registration to create a new application or choose an existing application. (既存のアプリケーションを選択した場合は、次の手順をスキップします。)(If you choose an existing application, skip the next step.)

  4. [作成] ブレードで、次を指定します。On the Create blade, specify the following:

    1. アプリケーションの [名前] (ユーザーがサインインするときに表示されます)。A Name for the application (displayed when users sign in).

    2. [アプリケーションの種類][リダイレクト URI] の値。The Application type and Redirect URI values.

      これらは要件によって異なります。These vary according to your requirements. たとえば Azure AD Authentication Library (ADAL) を使用している場合、 [アプリケーションの種類]Native に、 [リダイレクト URI]urn:ietf:wg:oauth:2.0:oob に設定します。For example, if you're using an Azure AD Authentication Library (ADAL), set Application Type to Native and Redirect URI to urn:ietf:wg:oauth:2.0:oob.

      注意

      Azure Active Directory (Azure AD) 認証ライブラリ (ADAL) と Azure AD Graph API は非推奨になります。Azure Active Directory (Azure AD) Authentication Library (ADAL) and Azure AD Graph API will be deprecated. 詳細については、Microsoft Authentication Library (MSAL) と Microsoft Graph API を使用するようにアプリケーションを更新する方法に関するページを参照してください。For more information, see Update your applications to use Microsoft Authentication Library (MSAL) and Microsoft Graph API.

      New app properties and values

      詳細については、「Azure AD の認証シナリオ」をご覧ください。To learn more, see Authentication Scenarios for Azure AD.

  5. [アプリケーション] ブレードで、次の作業を行います。From the application blade:

    1. [アプリケーション ID] の値をメモします。Note the Application ID value.

    2. [設定] > [API アクセス] > [必要なアクセス許可] の順に選択します。Choose Settings > API access > Required permissions.

    The Required permissions setting
  6. [必要なアクセス許可] ブレードで、 [追加] > [API アクセスの追加] > [API を選択します] の順に選択します。From the Required Permissions blade, choose Add > Add API access > Select an API.

    The Microsoft Graph setting
  7. [API を選択します] ブレードで、 [Microsoft Graph] > [選択] の順に選択します。From the Select an API blade, choose Microsoft Graph > Select. [アクセスの有効化] ブレードが開き、アプリケーションで使用できるアクセス許可スコープが一覧表示されます。The Enable access blade opens and lists permission scopes available to your application.

    Intune Graph API permission scopes

    関連する名前の左側にチェックを入れ、アプリに必要な役割を選択します。Choose the roles required for your app by placing a checkmark to the left of the relevant names. Intune に固有のアクセス許可スコープの詳細については、「Intune permission scopes (Intune のアクセス許可スコープ)」をご覧ください。To learn about specific Intune permission scopes, see Intune permission scopes. Graph API の他のアクセス許可スコープの詳細については、「Microsoft Graph のアクセス許可のリファレンス」をご覧ください。To learn about other Graph API permission scopes, see Microsoft Graph permissions reference.

    最善の結果を得るには、アプリケーションの実装に必要な最小限の役割を選択します。For best results, choose the fewest roles needed to implement your application.

    完了したら、 [選択][完了] を選択して変更を保存します。When finished, choose Select and Done to save you changes.

この時点で、次も実行できます。At this point, you may also:

  • すべてのテナント アカウントに、資格情報を入力せずにアプリを使用するアクセス許可を付与することを選択します。Choose to grant permission for all tenant accounts to use the app without providing credentials.

    これを実行するには、 [アクセス許可の付与] を選択し、確認プロンプトに同意します。To do so, choose Grant permissions and accept the confirmation prompt.

    初めてアプリケーションを実行すると、選択した役割を実行できるアクセス許可をアプリに付与するように求められます。When you run the application for the first time, you're prompted to grant the app permission to perform the selected roles.

    The Grant permissions button
  • テナントの外部ユーザーがアプリを使用できるようにします。Make the app available to users outside your tenant. (これは通常、複数のテナント/組織をサポートするパートナーにのみ必要です。)(This is typically only required for partners supporting multiple tenants/organizations.)

    これを実行するには、次のようにします。To do so:

    1. [アプリケーション] ブレードで [マニフェスト] を選択すると、 [マニフェストの編集] ブレードが開きます。Choose Manifest from the application blade, which opens the Edit Manifest blade.

      The Edit manifest blade
    2. availableToOtherTenants 設定の値を true に変更します。Change the value of the availableToOtherTenants setting to true.

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

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

Azure AD と Microsoft Graph では、アクセス許可スコープを使用して企業リソースへのアクセスを制御します。Azure AD and Microsoft Graph use permission scopes to control access to corporate resources.

アクセス許可スコープ (_OAuth スコープ_とも呼ばれます) は、特定の Intune エンティティとそのプロパティへのアクセスを制御します。Permission scopes (also called the OAuth scopes) control access to specific Intune entities and their properties. このセクションでは、Intune API の機能に対するアクセス許可スコープの概要について説明します。This section summarizes the permission scopes for Intune API features.

詳細については、次をご覧ください。To learn more:

Microsoft Graph にアクセス許可を付与する場合は、次のスコープを指定して Intune の機能へのアクセスを制御できます。次の表では、Intune API のアクセス許可のスコープをまとめています。When you grant permission to Microsoft Graph, you can specify the following scopes to control access to Intune features: The following table summarizes the Intune API permission scopes. 1 番目の列には Azure Portal に表示される機能名を示し、2 番目の列にはアクセス許可スコープ名を掲載しています。The first column shows the name of the feature as displayed in the Azure portal and the second column provides the permission scope name.

[アクセスを有効にする] 設定Enable Access setting スコープ名Scope name
Microsoft Intune デバイスでユーザーに影響を与えるリモート操作を実行するPerform user-impacting remote actions on Microsoft Intune devices DeviceManagementManagedDevices.PrivilegedOperations.AllDeviceManagementManagedDevices.PrivilegedOperations.All
Microsoft Intune デバイスの読み取りおよび書き込みRead and write Microsoft Intune devices DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All
Microsoft Intune デバイスの読み取りRead Microsoft Intune devices DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All
Microsoft Intune RBAC の設定の読み取りおよび書き込みRead and write Microsoft Intune RBAC settings DeviceManagementRBAC.ReadWrite.AllDeviceManagementRBAC.ReadWrite.All
Microsoft Intune RBAC の設定の読み取りRead Microsoft Intune RBAC settings DeviceManagementRBAC.Read.AllDeviceManagementRBAC.Read.All
Microsoft Intune アプリの読み取りおよび書き込みRead and write Microsoft Intune apps DeviceManagementApps.ReadWrite.AllDeviceManagementApps.ReadWrite.All
Microsoft Intune アプリの読み取りRead Microsoft Intune apps DeviceManagementApps.Read.AllDeviceManagementApps.Read.All
Microsoft Intune のデバイスの構成とポリシーの読み取りおよび書き込みRead and write Microsoft Intune Device Configuration and Policies DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All
Microsoft Intune のデバイスの構成とポリシーの読み取りRead Microsoft Intune Device Configuration and Policies DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All
Microsoft Intune の構成の読み取りおよび書き込みRead and write Microsoft Intune configuration DeviceManagementServiceConfig.ReadWrite.AllDeviceManagementServiceConfig.ReadWrite.All
Microsoft Intune の構成の読み取りRead Microsoft Intune configuration DeviceManagementServiceConfig.Read.AllDeviceManagementServiceConfig.Read.All

表は、Azure Portal に表示される順序で設定を一覧表示しています。The table lists the settings as they appear in the Azure portal. 次のセクションでは、スコープについてアルファベット順に説明します。The following sections describe the scopes in alphabetical order.

この時点では、Intune のすべてのアクセス許可スコープに管理者のアクセス権が必要です。At this time, all Intune permission scopes require administrator access. つまり、Intune API のリソースにアクセスするアプリまたはスクリプトを実行する場合は、対応する資格情報が必要になります。This means you need corresponding credentials when running apps or scripts that access Intune API resources.

DeviceManagementApps.Read.AllDeviceManagementApps.Read.All

  • [アクセスを有効にする] 設定:Microsoft Intune アプリの読み取りEnable Access setting: Read Microsoft Intune apps

  • 次のエンティティのプロパティとステータスへの読み取りアクセスを許可します。Permits read access to the following entity properties and status:

    • クライアント アプリClient Apps
    • モバイル アプリ カテゴリMobile App Categories
    • アプリ保護ポリシーApp Protection Policies
    • アプリの構成App Configurations

DeviceManagementApps.ReadWrite.AllDeviceManagementApps.ReadWrite.All

  • [アクセスを有効にする] 設定:Microsoft Intune アプリの読み取りおよび書き込みEnable Access setting: Read and write Microsoft Intune apps

  • DeviceManagementApps.Read.All と同じ操作を許可します。Allows the same operations as DeviceManagementApps.Read.All

  • また、次のエンティティに対する変更を許可します。Also permits changes to the following entities:

    • クライアント アプリClient Apps
    • モバイル アプリ カテゴリMobile App Categories
    • アプリ保護ポリシーApp Protection Policies
    • アプリの構成App Configurations

DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All

  • [アクセスを有効にする] 設定:Microsoft Intune デバイスの構成とポリシーの読み取りEnable Access setting: Read Microsoft Intune device configuration and policies

  • 次のエンティティのプロパティとステータスへの読み取りアクセスを許可します。Permits read access to the following entity properties and status:

    • デバイス構成Device Configuration
    • デバイス コンプライアンス ポリシーDevice Compliance Policy
    • 通知メッセージNotification Messages

DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All

  • [アクセスを有効にする] 設定:Microsoft Intune のデバイスの構成とポリシーの読み取りおよび書き込みEnable Access setting: Read and write Microsoft Intune device configuration and policies

  • DeviceManagementConfiguration.Read.All と同じ操作を許可します。Allows the same operations as DeviceManagementConfiguration.Read.All

  • また、アプリでは次のエンティティを作成、割り当て、削除、および変更できます。Apps can also create, assign, delete, and change the following entities:

    • デバイス構成Device Configuration
    • デバイス コンプライアンス ポリシーDevice Compliance Policy
    • 通知メッセージNotification Messages

DeviceManagementManagedDevices.PrivilegedOperations.AllDeviceManagementManagedDevices.PrivilegedOperations.All

  • [アクセスを有効にする] 設定:Microsoft Intune デバイスでユーザーに影響を与えるリモート操作を実行するEnable Access setting: Perform user-impacting remote actions on Microsoft Intune devices

  • マネージド デバイスへの次のリモート操作を許可します。Permits the following remote actions on a managed device:

    • インベントリから削除Retire
    • ワイプWipe
    • パスコードのリセット/復旧Reset/Recover Passcode
    • リモート ロックRemote Lock
    • 紛失モードの有効/無効Enable/Disable Lost Mode
    • PC のクリーンアップClean PC
    • 再起動Reboot
    • 共有デバイスからのユーザーの削除Delete User from Shared Device

DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All

  • [アクセスを有効にする] 設定:Microsoft Intune デバイスの読み取りEnable Access setting: Read Microsoft Intune devices

  • 次のエンティティのプロパティとステータスへの読み取りアクセスを許可します。Permits read access to the following entity properties and status:

    • マネージド デバイスManaged Device
    • デバイスのカテゴリDevice Category
    • 検出されたアプリDetected App
    • リモート操作Remote actions
    • マルウェア情報Malware information

DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All

  • [アクセスを有効にする] 設定:Microsoft Intune デバイスの読み取りおよび書き込みEnable Access setting: Read and write Microsoft Intune devices

  • DeviceManagementManagedDevices.Read.All と同じ操作を許可します。Allows the same operations as DeviceManagementManagedDevices.Read.All

  • また、アプリでは次のエンティティを作成、削除、変更できます。Apps can also create, delete, and change the following entities:

    • マネージド デバイスManaged Device
    • デバイスのカテゴリDevice Category
  • 次のリモート操作も実行できます。The following remote actions are also allowed:

    • デバイスの検索Locate devices
    • アクティベーション ロックを無効にするDisable Activation Lock
    • リモート アシスタンスの要求Request remote assistance

DeviceManagementRBAC.Read.AllDeviceManagementRBAC.Read.All

  • [アクセスを有効にする] 設定:Microsoft Intune RBAC の設定の読み取りEnable Access setting: Read Microsoft Intune RBAC settings

  • 次のエンティティのプロパティとステータスへの読み取りアクセスを許可します。Permits read access to the following entity properties and status:

    • ロールの割り当てRole Assignments
    • ロールの定義Role Definitions
    • リソースの操作Resource Operations

DeviceManagementRBAC.ReadWrite.AllDeviceManagementRBAC.ReadWrite.All

  • [アクセスを有効にする] 設定:Microsoft Intune RBAC の設定の読み取りおよび書き込みEnable Access setting: Read and write Microsoft Intune RBAC settings

  • DeviceManagementRBAC.Read.All と同じ操作を許可します。Allows the same operations as DeviceManagementRBAC.Read.All

  • また、アプリでは次のエンティティを作成、割り当て、削除、および変更できます。Apps can also create, assign, delete, and change the following entities:

    • ロールの割り当てRole Assignments
    • ロールの定義Role Definitions

DeviceManagementServiceConfig.Read.AllDeviceManagementServiceConfig.Read.All

  • [アクセスを有効にする] 設定:Microsoft Intune の構成の読み取りEnable Access setting: Read Microsoft Intune configuration

  • 次のエンティティのプロパティとステータスへの読み取りアクセスを許可します。Permits read access to the following entity properties and status:

    • デバイスの登録Device Enrollment
    • Apple Push Notification 証明書Apple Push Notification Certificate
    • Apple Device Enrollment ProgramApple Device Enrollment Program
    • Apple Volume Purchase ProgramApple Volume Purchase Program
    • Exchange ConnectorExchange Connector
    • 使用条件Terms and Conditions
    • 通信経費管理Telecoms Expense Management
    • クラウド PKICloud PKI
    • ブランド化Branding
    • Mobile Threat DefenseMobile Threat Defense

DeviceManagementServiceConfig.ReadWrite.AllDeviceManagementServiceConfig.ReadWrite.All

  • [アクセスを有効にする] 設定:Microsoft Intune の構成の読み取りおよび書き込みEnable Access setting: Read and write Microsoft Intune configuration

  • DeviceManagementServiceConfig.Read.All と同じ操作を許可します。Allows the same operations as DeviceManagementServiceConfig.Read.All_

  • また、アプリでは Intune の次の機能を構成できます。Apps can also configure the following Intune features:

    • デバイスの登録Device Enrollment
    • Apple Push Notification 証明書Apple Push Notification Certificate
    • Apple Device Enrollment ProgramApple Device Enrollment Program
    • Apple Volume Purchase ProgramApple Volume Purchase Program
    • Exchange ConnectorExchange Connector
    • 使用条件Terms and Conditions
    • 通信経費管理Telecoms Expense Management
    • クラウド PKICloud PKI
    • ブランド化Branding
    • Mobile Threat DefenseMobile Threat Defense

Azure AD 認証の例Azure AD authentication examples

このセクションでは、Azure AD を C# プロジェクトや PowerShell プロジェクトに組み込む方法について説明します。This section shows how to incorporate Azure AD into your C# and PowerShell projects.

それぞれの例で、少なくとも前述のアクセス許可スコープ DeviceManagementManagedDevices.Read.All を持つアプリケーション ID を指定する必要があります。In each example, you'll need to specify an application ID that has at least the DeviceManagementManagedDevices.Read.All permission scope (discussed earlier).

いずれかの例をテストすると、次のような HTTP ステータス 403 (禁止されています) のエラーが表示されることがあります。When testing either example, you may receive HTTP status 403 (Forbidden) errors similar to the following:

{
  "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"
    }
  }
}

この場合は、次の点を確認します。If this happens, verify that:

  • Microsoft Graph API と DeviceManagementManagedDevices.Read.All アクセス許可スコープの使用が承認されたアプリケーション ID に更新している。You've updated the application ID to one authorized to use the Microsoft Graph API and the DeviceManagementManagedDevices.Read.All permission scope.

  • テナントの資格情報は、管理機能をサポートしている。Your tenant credentials support administrative functions.

  • 表示されているサンプルと同様のコードを使用している。Your code is similar to the displayed samples.

Azure AD の認証 (C#)Authenticate Azure AD in C#

この例では、C# を使用して、Intune アカウントに関連付けられているデバイスの一覧を取得する方法を説明します。This example shows how to use C# to retrieve a list of devices associated with your Intune account.

注意

Azure Active Directory (Azure AD) 認証ライブラリ (ADAL) と Azure AD Graph API は非推奨になります。Azure Active Directory (Azure AD) Authentication Library (ADAL) and Azure AD Graph API will be deprecated. 詳細については、Microsoft Authentication Library (MSAL) と Microsoft Graph API を使用するようにアプリケーションを更新する方法に関するページを参照してください。For more information, see Update your applications to use Microsoft Authentication Library (MSAL) and Microsoft Graph API.

  1. Visual Studio を起動して、新しい Visual C# コンソール アプリ (.NET Framework) プロジェクトを作成します。Start Visual Studio and then create a new Visual C# Console app (.NET Framework) project.

  2. プロジェクトの名前を入力し、必要に応じて他の詳細情報を入力します。Enter a name for your project and provide other details as desired.

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

    1. ソリューション エクスプローラーを右クリックします。Right-click the Solution Explorer.
    2. [NuGet パッケージの管理...]Choose Manage NuGet Packages… > [参照] を選択します。> Browse.
    3. Microsoft.IdentityModel.Clients.ActiveDirectory を選択して、 [インストール] を選択します。Select Microsoft.IdentityModel.Clients.ActiveDirectory and then choose Install.
    Selecting the Azure AD identity model module
  4. Program.cs の先頭に、次のステートメントを追加します。Add the following statements to the top of Program.cs:

    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    using System.Net.Http;
    
  5. Authorization ヘッダーを作成するメソッドを追加します。Add a method to create the authorization header:

    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 が付与されたものと一致するように変更してください。Remember to change the value of application_ID to match one granted at least the DeviceManagementManagedDevices.Read.All permission scope, as described earlier.

  6. デバイスの一覧を取得するメソッドを追加します。Add a method to retrieve the list of devices:

    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. MainGetMyManagedDevices を呼び出すように更新します。Update Main to call GetMyManagedDevices:

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

初めてプログラムを実行すると、2 つのプロンプトが表示されます。When you first run your program, you should receive two prompts. 1 つ目は資格情報を要求し、2 つ目は managedDevices 要求に対するアクセス許可を付与します。The first requests your credentials and the second grants permissions for the managedDevices request.

参考までに、完成したプログラムを次に示します。For reference, here's the completed program:

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)Authenticate Azure AD (PowerShell)

次の PowerShell スクリプトでは、認証のために AzureAD PowerShell モジュールを使用します。The following PowerShell script uses the AzureAD PowerShell module for authentication. 詳細については、「Azure Active Directory PowerShell Version 2 (Azure Active Directory PowerShell バージョン 2)」と「Intune PowerShell examples (Intune PowerShell の例)」をご覧ください。To learn more, see Azure Active Directory PowerShell Version 2 and the Intune PowerShell examples.

この例では、$clientID の値を、有効なアプリケーション ID と一致するように更新します。In this example, update the value of $clientID to match a valid application ID.

function Get-AuthToken {
    [cmdletbinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        $User
    )

    $userUpn = New-Object "System.Net.Mail.MailAddress" -ArgumentList $User
    $tenant = $userUpn.Host

    Write-Host "Checking for AzureAD module..."

    $AadModule = Get-Module -Name "AzureAD" -ListAvailable
    if ($AadModule -eq $null) {
        Write-Host "AzureAD PowerShell module not found, looking for AzureADPreview"
        $AadModule = Get-Module -Name "AzureADPreview" -ListAvailable
    }

    if ($AadModule -eq $null) {
        write-host
        write-host "AzureAD Powershell module not installed..." -f Red
        write-host "Install by running 'Install-Module AzureAD' or 'Install-Module AzureADPreview' from an elevated PowerShell prompt" -f Yellow
        write-host "Script can't continue..." -f Red
        write-host
        exit
    }

    # Getting path to ActiveDirectory Assemblies
    # If the module count is greater than 1 find the latest version

    if ($AadModule.count -gt 1) {
        $Latest_Version = ($AadModule | select version | Sort-Object)[-1]
        $aadModule = $AadModule | ? { $_.version -eq $Latest_Version.version }
        $adal = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
        $adalforms = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"
    }

    else {
        $adal = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
        $adalforms = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"
    }

    [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
    [System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null

    $clientId = "<Your Application ID>"
    $redirectUri = "urn:ietf:wg:oauth:2.0:oob"
    $resourceAppIdURI = "https://graph.microsoft.com"
    $authority = "https://login.microsoftonline.com/$Tenant"

    try {
        $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
        # https://msdn.microsoft.com/library/azure/microsoft.identitymodel.clients.activedirectory.promptbehavior.aspx
        # Change the prompt behaviour to force credentials each time: Auto, Always, Never, RefreshSession
        $platformParameters = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters" -ArgumentList "Auto"
        $userId = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier" -ArgumentList ($User, "OptionalDisplayableId")
        $authResult = $authContext.AcquireTokenAsync($resourceAppIdURI, $clientId, $redirectUri, $platformParameters, $userId).Result
        # If the accesstoken is valid then create the authentication header
        if ($authResult.AccessToken) {
            # Creating header for Authorization token
            $authHeader = @{
                'Content-Type' = 'application/json'
                'Authorization' = "Bearer " + $authResult.AccessToken
                'ExpiresOn' = $authResult.ExpiresOn
            }
            return $authHeader
        }
        else {
            Write-Host
            Write-Host "Authorization Access Token is null, please re-run authentication..." -ForegroundColor Red
            Write-Host
            break
        }
    }
    catch {
        write-host $_.Exception.Message -f Red
        write-host $_.Exception.ItemName -f Red
        write-host
        break
    }   
}

$authToken = Get-AuthToken -User "<Your AAD Username>"

try {
    $uri = "https://graph.microsoft.com/beta/me/managedDevices"
    Write-Verbose $uri
    (Invoke-RestMethod -Uri $uri –Headers $authToken –Method Get).Value
}
catch {
    $ex = $_.Exception
    $errorResponse = $ex.Response.GetResponseStream()
    $reader = New-Object System.IO.StreamReader($errorResponse)
    $reader.BaseStream.Position = 0
    $reader.DiscardBufferedData()
    $responseBody = $reader.ReadToEnd();
    Write-Host "Response content:`n$responseBody" -f Red
    Write-Error "Request to $Uri failed with HTTP Status $($ex.Response.StatusCode) $($ex.Response.StatusDescription)"
    write-host
    break
}

複数のテナントとパートナーのサポートSupport multiple tenants and partners

独自の Azure AD テナントがある組織をサポートする組織の場合、それぞれのテナントでアプリケーションを使用するようにクライアントを許可する必要があることがあります。If your organization supports organizations with their own Azure AD tenants, you may want to permit your clients to use your application with their respective tenants.

これを実行するには、次のようにします。To do so:

  1. 対象の Azure AD テナントに、クライアントのアカウントが存在することを確認します。Verify that the client account exists in the target Azure AD tenant.

  2. テナント アカウントが、ユーザーによるアプリケーションの登録を許可していることを確認します (ユーザー設定 をご覧ください)。Verify that your tenant account allows users to register applications (see User settings).

  3. 各テナント間のリレーションシップを確立します。Establish a relationship between each tenant.

    そのためには、次のいずれかを実行します。To do so, either:

    a.a. Microsoft Partner Center を使用して、クライアントとそのメール アドレスのリレーションシップを定義します。Use the Microsoft Partner Center to define a relationship with your client and their email address.

    b.b. ユーザーを招待して、テナントのゲストにします。Invite the user to become a guest of your tenant.

ユーザーを招待してテナントのゲストにするには、次を実行します。To invite the user to be a guest of your tenant:

  1. [クイック タスク] パネルで、 [ゲスト ユーザーの追加] を選択します。Choose Add a guest user from the Quick tasks panel.

    Use Quick Tasks to add a guest user
  2. クライアントのメール アドレスを入力し、(必要に応じて) 招待状に個人的なメッセージを追加します。Enter the client's email address and (optionally) add a personalized message for the invite.

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

これにより、ユーザーに招待状が送信されます。This sends an invite to the user.

A sample guest invitation

ユーザーは [開始] リンクを選択して、招待を承諾する必要があります。The user needs to choose the Get Started link to accept your invitation.

リレーションシップが確立されると (または招待が承諾されると)、 [ディレクトリ ロール] にユーザー アカウントが追加されます。When the relationship is established (or your invitation has been accepted), add the user account to the Directory role.

必要に応じて、そのほかのロールにユーザーを追加するようにします。Remember to add the user to other roles as needed. たとえば、ユーザーに Intune の設定の管理を許可する場合、ユーザーは [グローバル管理者] または [Intune サービス管理者] のいずれかである必要があります。For example, to allow the user to manage Intune settings, they need to be either a Global Administrator or an Intune Service administrator.

また、Also:

  • を使用して、ユーザー アカウントに Intune のライセンスを割り当てます https://admin.microsoft.comUse https://admin.microsoft.com to assign an Intune license to your user account.

  • 自身ではなく、クライアントの Azure AD テナントのドメインに対する認証のためにアプリケーション コードを更新します。Update application code to authenticate to the client's Azure AD tenant domain, rather than your own.

    たとえば、自身のテナントのドメインが contosopartner.onmicrosoft.com、クライアントのテナントのドメインが northwind.onmicrosoft.com で、クライアントのテナントを認証するためにコードを更新するとします。For example, suppose your tenant domain is contosopartner.onmicrosoft.com and your client's tenant domain is northwind.onmicrosoft.com, you would update your code to authenticate to your client's tenant.

    先ほどの例に基づき C# アプリケーションでこれを実行するには、変数 authority の値を変更します。To do so in a C# application based on the earlier example, you'd change the value of the authority variable:

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

    to

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