Использование Microsoft Entra ID для доступа к API Intune в Microsoft Graph

Microsoft API Graph теперь поддерживает Microsoft Intune с определенными API и ролями разрешений. Microsoft API Graph использует Microsoft Entra ID для проверки подлинности и управления доступом.
Для доступа к API Intune в Microsoft Graph требуется:

  • Идентификатор приложения со следующими характеристиками:

    • Разрешение на вызов Microsoft Entra ID и API Microsoft Graph.
    • Области разрешений, соответствующие задачам конкретного приложения.
  • Учетные данные пользователя со следующими характеристиками:

    • Разрешение на доступ к клиенту Microsoft Entra, связанному с приложением.
    • Разрешения ролей, необходимые для поддержки областей разрешений приложения.
  • Конечный пользователь, предоставляя приложению разрешение на выполнение задач приложений для своего клиента Azure.

В этой статье:

  • Показано, как зарегистрировать приложение с доступом к API Graph Майкрософт и соответствующим ролям разрешений.

  • Описывает роли разрешений API Intune.

  • Предоставляет примеры проверки подлинности API Intune для C# и PowerShell.

  • Описывается поддержка нескольких клиентов.

Дополнительные сведения см. в статьях

Регистрация приложений для использования API Microsoft Graph

Чтобы зарегистрировать приложение для использования API Microsoft Graph, выполните следующие действия:

  1. Войдите в Центр администрирования Microsoft Intune, используя учетные данные администратора.

    При необходимости можно использовать следующие учетные записи:

    • Учетная запись администратора клиента.
    • Учетная запись пользователя клиента с включенным параметром Пользователи могут регистрировать приложения .
  2. Выберите Все службы>M365 Microsoft Entra ID>Microsoft Entra ID>Регистрация приложений.

    Команда меню Регистрация приложений
  3. Щелкните Новая регистрация, чтобы создать новое приложение, или выберите существующее приложение. (Если вы выберете существующее приложение, пропустите следующий шаг.)

  4. В области Регистрация приложения укажите следующее:

  5. В области приложения:

    1. Запомните значение Идентификатор приложения (клиента).

    2. Выберите Разрешения API.

  6. В области Разрешения API выберите Добавить разрешение>Microsoft API>Microsoft Graph. Затем выберите тип разрешений, необходимых приложению.

    Выберите роли, необходимые для приложения, установив флажок слева от соответствующих имен. Дополнительные сведения о конкретных областях разрешений Intune см. в статье Области разрешений Intune. Дополнительные сведения о других API Graph областях разрешений см. в справочнике по разрешениям Microsoft Graph.

    Рекомендуется выбирать наименьшее количество ролей, необходимых для реализации приложения.

Разрешения хранилища данных и отчетов

При добавлении приложения с помощью Центр администрирования Microsoft Entra можно выбрать разрешения API Intune в зависимости от требований приложения.

API-интерфейсы решений для партнеров

При добавлении приложения через Центр администрирования Microsoft Entra доступны следующие разрешения API Intune:

  • get_device_compliance. Это разрешение API используется для получения сведений о состоянии устройства и соответствии Microsoft Intune. Это разрешение API используется партнерами по сетевым контроль доступа. Дополнительные сведения см. в статье Интеграция сетевых контроль доступа с Intune.
  • manage_partner_compliance_policy — это разрешение API используется для управления политиками соответствия партнеров с помощью Microsoft Intune. Это разрешение API позволяет приложению отправлять партнерские политики соответствия требованиям и назначение группы Microsoft Entra Microsoft Intune в 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.

Если вы являетесь партнером, заинтересованным в интеграции с Intune с помощью этих разрешений API, обратитесь за информацией к команде Microsoft Intelligent Security Association].

По завершении нажмите кнопку Добавить разрешения , чтобы сохранить изменения.

На этом этапе вы также можете:

  • Выберите разрешение для всех учетных записей клиента на использование приложения без предоставления учетных данных.

    Для этого можно предоставить разрешения и подтвердить действия в появившемся окне запроса.

    При первом запуске приложения вам будет предложено предоставить приложению разрешение на выполнение выбранных ролей.

  • Сделайте приложение доступным для пользователей за пределами вашего клиента. (Обычно это требуется только для партнеров, поддерживающих несколько клиентов или организаций.)

    Для этого:

    1. Выберите Манифест в области приложения.

      Колонка
    2. Измените значение параметра на availableToOtherTenantstrue.

    3. Сохраните изменения.

Список приложений

Если при запросе описания приложения при использовании API Graph вы получаете большой объем данных, может возникнуть ошибка 503 Service Недоступны. Рекомендуется повторить попытку с меньшим размером страницы, например 20 или менее элементов.

Области разрешений Intune

Microsoft Entra ID и Microsoft Graph используют области разрешений для управления доступом к корпоративным ресурсам.

Области разрешений (также называемые областями OAuth) управляют доступом к определенным сущностям Intune и их свойствам. В этом разделе приведены области разрешений для функций API Intune.

Дополнительные сведения:

При предоставлении разрешения Microsoft Graph можно указать следующие области для управления доступом к функциям Intune. В следующей таблице приведены области разрешений API Intune. В первом столбце отображается имя функции, отображаемое в центре администрирования Microsoft Intune, а во втором — имя область разрешения.

Параметр "Включить доступ" Имя области
Выполнение удаленных действий, влияющих на пользователей, на устройствах Microsoft Intune DeviceManagementManagedDevices.PrivilegedOperations.All
Считывание и запись данных устройств Microsoft Intune DeviceManagementManagedDevices.ReadWrite.All
Считывание данных устройств Microsoft Intune DeviceManagementManagedDevices.Read.All
Считывание и запись параметров RBAC для Microsoft Intune DeviceManagementRBAC.ReadWrite.All
Считывание параметров RBAC для Microsoft Intune 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 Intune.

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 устройствах

  • Разрешает следующие удаленные действия на управляемом устройстве:

    • Прекращение использования
    • Очистка
    • Сброс и восстановление секретного кода
    • Удаленная блокировка
    • Включение и отключение режима потери
    • Очистка компьютера
    • Перезагрузки
    • Удаление пользователя с общего устройства

DeviceManagementManagedDevices.Read.All

  • Параметр включить доступ: чтение Microsoft Intune устройствах

  • Разрешает доступ на чтение к следующим свойствам и состоянию сущности:

    • Управляемое устройство
    • Категория устройства
    • Обнаружено приложение
    • Удаленные действия
    • Сведения о вредоносных программах

DeviceManagementManagedDevices.ReadWrite.All

  • Параметр Включить доступ: чтение и запись Microsoft Intune устройствах

  • Разрешает те же операции, что и DeviceManagementManagedDevices.Read.All

  • Приложения также могут создавать, удалять и изменять следующие сущности:

    • Управляемое устройство
    • Категория устройства
  • Также разрешены следующие удаленные действия:

    • Поиск устройств
    • Отключение блокировки активации
    • Запрос удаленной помощи

DeviceManagementRBAC.Read.All

  • Включение параметра доступа: чтение Microsoft Intune параметров RBAC

  • Разрешает доступ на чтение к следующим свойствам и состоянию сущности:

    • Назначения ролей
    • Определения ролей
    • Операции с ресурсами

DeviceManagementRBAC.ReadWrite.All

  • Включение параметра доступа: чтение и запись Microsoft Intune параметров RBAC

  • Разрешает те же операции, что и DeviceManagementRBAC.Read.All

  • Приложения также могут создавать, назначать, удалять и изменять следующие сущности:

    • Назначения ролей
    • Определения ролей

DeviceManagementServiceConfig.Read.All

  • Параметр включить доступ: настройка Microsoft Intune чтения

  • Разрешает доступ на чтение к следующим свойствам и состоянию сущности:

    • Регистрация устройств
    • Сертификат push-уведомлений Apple
    • Программа регистрации устройств Apple
    • Программа приобретения корпоративных лицензий Apple
    • Соединитель Exchange
    • Условия использования
    • Cloud PKI
    • Брендирование
    • Защита от угроз на мобильных устройствах

DeviceManagementServiceConfig.ReadWrite.All

  • Параметр включить доступ: настройка Microsoft Intune чтения и записи

  • Разрешает те же операции, что и DeviceManagementServiceConfig.Read.All_

  • Приложения также могут настроить следующие функции Intune:

    • Регистрация устройств
    • Сертификат push-уведомлений Apple
    • Программа регистрации устройств Apple
    • Программа приобретения корпоративных лицензий Apple
    • Соединитель Exchange
    • Условия использования
    • Cloud 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 Graph и DeviceManagementManagedDevices.Read.All область разрешений.

  • Учетные данные клиента поддерживают административные функции.

  • Код аналогичен отображаемым примерам.

Проверка подлинности Microsoft Entra ID в C#

В этом примере показано, как использовать C# для получения списка устройств, связанных с вашей учетной записью Intune.

Примечание.

Azure AD API Graph находится на этапе прекращения использования. Подробности см. в статье Обновление приложений, чтобы использовать библиотеку проверки подлинности Майкрософт (MSAL) и API Microsoft Graph

  1. Запустите Visual Studio и создайте проект консольного приложения Visual C# (платформа .NET Framework).

  2. Введите имя проекта и при необходимости укажите другие сведения.

    Создание проекта консольного приложения C# в Visual Studio
  3. Используйте Обозреватель решений, чтобы добавить в проект пакет NuGet Microsoft MSAL:

    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. Обновите main для вызова 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 Entra ID с помощью Microsoft Graph PowerShell

Скрипты PowerShell могут использовать модуль Microsoft Graph PowerShell для проверки подлинности. Дополнительные сведения см. в статье Примеры Microsoft Graph PowerShell и Intune PowerShell.

Поддержка нескольких клиентов и партнеров

Если ваша организация поддерживает организации с собственными клиентами Microsoft Entra, вы можете разрешить клиентам использовать ваше приложение с соответствующими клиентами.

Для этого:

  1. Убедитесь, что учетная запись клиента существует в целевом клиенте Microsoft Entra.

  2. Убедитесь, что учетная запись клиента позволяет пользователям регистрировать приложения (см . раздел Параметры пользователя).

  3. Установить связь между каждым клиентом.

    Для этого выполните одно из следующих действий:

    А. Используйте Центр партнеров Майкрософт , чтобы определить отношения с клиентом и его адрес электронной почты.

    Б. Предложите пользователю стать гостем вашего клиента.

Чтобы пригласить пользователя в качестве гостя клиента, выполните следующие действия:

  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/";