Настройка приложений управляющей программы, вызывающих веб-API

Относится к: Зеленый круглый значок с белой галочкой, обозначающий, что приведенное ниже содержимое относится к арендаторам Workforce. Арендаторы Workforce (Подробнее)

Узнайте, как настроить код для управляющей программы, вызывающей веб-API.

Библиотеки Майкрософт, поддерживающие демон-приложения

Следующие библиотеки Майкрософт поддерживают демон-приложения:

Язык или платформа Проект на сайте
GitHub
Пакет Получение
начал(а)
Вход пользователей Доступ к веб-API Общедоступная версия (GA) или
Общедоступная предварительная версия1
.СЕТЬ MSAL.NET Microsoft.Identity.Client Быстрый старт Библиотека не может запрашивать токены идентификации для авторизации пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Версия с общим доступом (GA)
Ява MSAL4J msal4j Библиотека не может запрашивать токены идентификации для авторизации пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Версия с общим доступом (GA)
Узел Узел MSAL msal-node Быстрый старт Библиотека не может запрашивать токены идентификации для авторизации пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Версия с общим доступом (GA)
Питон MSAL Python msal-python Быстрый старт Библиотека не может запрашивать токены идентификации для авторизации пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Версия с общим доступом (GA)

1Универсальные условия лицензионного соглашения для веб-служб применяются к библиотекам в общедоступной предварительной версии.

Настройка прав

Демо-н-программы используют разрешения приложений, а не делегированные разрешения. Поэтому поддерживаемый ими тип учетной записи не может быть учетной записью в любом каталоге организации или личной учетной записью Майкрософт (например, Skype, Xbox, Outlook.com). Не существует администратора арендатора, который мог бы предоставить согласие служебному приложению для личной учетной записи Microsoft. Вам нужно выбрать учетные записи в моей организации или учетных записях в любой организации.

Центр авторизации, указанный в конфигурации приложения, должен включать идентификатор арендатора или доменное имя, связанное с вашей организацией.

Даже если вы хотите предоставить мультитенантный инструмент, следует использовать идентификатор клиента или доменное имя, а неcommonorganizations с этим потоком данных, так как служба не может надежно определить, какой клиент следует использовать.

Настройка и создание экземпляра приложения

В библиотеках проверки подлинности Майкрософт (MSAL) учетные данные клиента (секрет или сертификат) передаются в качестве параметра конструкции конфиденциального клиентского приложения.

Внимание

Даже если приложение является консольным и работает как служба, то, если это управляющее приложение, оно должно быть конфиденциальным клиентским приложением.

Файл конфигурации

Файл конфигурации определяет:

  • Облачный экземпляр и идентификатор клиента, которые вместе образуют авторитет.
  • Идентификатор клиента, полученный при регистрации приложения.
  • Секрет клиента или сертификат.

Вот пример определения конфигурации в образце файла конфигурации appsettings.json. Этот пример взят из примера кода управляющей программы консоли .NET на GitHub.

{
    "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
        "ClientId": "[Enter here the ClientId for your application]",
        "ClientCredentials": [
            {
                "SourceType": "ClientSecret",
                "ClientSecret": "[Enter here a client secret for your application]"
            }
        ]
    }
}

Вы предоставляете сертификат вместо секрета клиента или учетные данные федерации идентичности рабочих нагрузок.

Создайте экземпляр приложения MSAL

Чтобы создать экземпляр приложения MSAL, добавьте, вызовите или импортируйте пакет MSAL (в зависимости от языка).

Конструкция отличается в зависимости от того, используете вы клиентские секреты или сертификаты (или, в качестве расширенного сценария, подписанные утверждения).

Укажите ссылку на пакет

Ссылка на пакет MSAL в коде приложения.

Добавьте в приложение пакет NuGet Microsoft.Identity.Web.TokenAcquisition. Кроме того, если вы хотите вызвать Microsoft Graph, добавьте пакет Microsoft.Identity.Web.GraphServiceClient . Проект может быть следующим образом. Файл appsettings.json необходимо скопировать в выходной каталог.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <RootNamespace>daemon_console</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Identity.Web.GraphServiceClient" Version="2.12.2" />
  </ItemGroup>

  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

В файле Program.cs добавьте директиву using в код для ссылки на Microsoft.Identity.Web.

using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;

Создайте экземпляр конфиденциального клиентского приложения с клиентским секретом

Вот код для создания экземпляра конфиденциального клиентского приложения с секретом клиента:

В следующем примере создается конфиденциальное клиентское приложение с помощью секрета клиента с Microsoft. Identity.Web:

   class Program
    {
        static async Task Main(string[] _)
        {
            // Get the Token acquirer factory instance. By default it reads an appsettings.json
            // file if it exists in the same folder as the app (make sure that the 
            // "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
            TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();

            // Configure the application options to be read from the configuration
            // and add the services you need (Graph, token cache)
            IServiceCollection services = tokenAcquirerFactory.Services;
            services.AddMicrosoftGraph();
            // By default, you get an in-memory token cache.
            // For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization

            // Resolve the dependency injection.
            var serviceProvider = tokenAcquirerFactory.Build();

            // ...
        }
    }

Конфигурация считывается из appsettings.json:

Создание экземпляра конфиденциального клиентского приложения с сертификатом клиента

Ниже приведен код для создания приложения с сертификатом.

Код построения приложения совпадает с примером секрета клиента. Единственное различие заключается в том, что сертификат описан в конфигурации вместо секрета. Существует множество способов получения сертификата. Дополнительные сведения см. в разделе "Использование сертификатов с Microsoft Identity Web". В следующем примере конфигурации показано, как получить сертификат из Azure Key Vault. Удостоверение Майкрософт передает управление DefaultAzureCredential из Azure Identity и использует управляемую идентичность, если она доступна, чтобы получить доступ к сертификату из Хранилища ключей. Вы можете выполнить локальную отладку приложения, так как DefaultAzureCredential использует учетные данные разработчика.

  "ClientCredentials": [
      {
        "SourceType": "KeyVault",
        "KeyVaultUrl": "https://yourKeyVaultUrl.vault.azure.net",
        "KeyVaultCertificateName": "NameOfYourCertificate"
      }

Расширенный сценарий: создание экземпляра конфиденциального клиентского приложения с утверждениями клиента

Помимо использования секрета клиента или сертификата конфиденциальные клиентские приложения также могут подтвердить свою личность с помощью утверждений клиента. Дополнительные сведения см. в разделе CredentialDescription .

Следующие шаги

Перейдите к следующей статье в этом сценарии, получите токен для приложения.