Поделиться через


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

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

Узнайте, как настроить код для управляющей программы, вызывающей веб-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.js. Этот пример взят из примера кода управляющей программы консоли .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;

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

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

   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:

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

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

Сам код точно такой же. Сертификат описан в конфигурации. Существует множество способов получения сертификата. Дополнительные сведения см. в разделе https://aka.ms/ms-id-web-certificates. Вот как вы будете делать, чтобы получить сертификат из KeyVault. Удостоверение Майкрософт передает управление DefaultAzureCredential из Azure Identity и использует управляемую идентичность, если она доступна, чтобы получить доступ к сертификату из Хранилища ключей. Вы можете отлаживать свое приложение локально, поскольку оно использует ваши учетные данные разработчика.

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

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

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

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

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