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


Приложение для настольного компьютера, которое вызывает веб-API: Конфигурация кода

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

В этой статье содержатся инструкции по настройке кода с координатами приложения.

Предпосылки

  • Зарегистрируйте новое приложение в Центре администрирования Microsoft Entra, настроенное только для учетных записей в этом каталоге организации. Дополнительные сведения см. в статье "Регистрация приложения ". Запишите следующие значения на странице обзора приложения для последующего использования:
    • Идентификатор приложения (клиента)
    • Идентификатор каталога (арендатора)

Добавьте URI перенаправления платформы

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

  1. В разделе "Управление" выберите Аутентификация>Добавить платформу>мобильных и настольных приложений
  2. В зависимости от используемого метода проверки подлинности выберите один из следующих вариантов:
    • Для приложений, использующих внедренные браузеры, используйте точное значение: https://login.microsoftonline.com/common/oauth2/nativeclient
    • Для приложений с помощью системных браузеров используйте точное значение: http://localhost
    • Objective-C или swift-приложения для macOS: msauth.<your.app.bundle.id>://auth
    • Приложения Node.js на Electron: msal{Your_Application/Client_Id}://auth

Замечание

Для приложений Менеджера веб-аутентификации (WAM) в MSAL не требуется URI перенаправления.

Включение публичного клиентского потока

Чтобы отличить поток кода устройства, встроенную проверку подлинности Windows и имя пользователя и пароль от конфиденциального клиентского приложения, используя поток учетных данных клиента, используемый в приложениях управляющей программы, ни один из которых не требует URI перенаправления, настройте его как общедоступное клиентское приложение. Для достижения этой конфигурации

Чтобы определить приложение как общедоступный клиент, выполните следующие действия.

  1. В разделе "Управление" выберите "Проверка подлинности".

  2. В разделе "Дополнительные параметры" для параметра "Разрешить общедоступные потоки клиентов" нажмите кнопку "Да".

  3. Выберите Сохранить, чтобы сохранить изменения.

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

Следующие библиотеки Майкрософт поддерживают настольные приложения.

Язык или платформа Проект на сайте
GitHub
Пакет Получение
началось
Войти пользователей Доступ к веб-API Общедоступная версия (GA) или
Общедоступная предварительная версия1
Электрон MSAL Node.js msal-node Библиотека может запросить токены удостоверения для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная предварительная версия
Ява MSAL4J msal4j Библиотека может запросить токены удостоверения для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная версия
macOS (Swift/Obj-C) MSAL для iOS и macOS МСАЛ Руководство Библиотека может запросить токены удостоверения для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная версия
UWP (Универсальная платформа Windows) MSAL.NET Microsoft.Identity.Client Руководство Библиотека может запросить токены удостоверения для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная версия
WPF (Windows Presentation Foundation) MSAL.NET Microsoft.Identity.Client Руководство Библиотека может запросить токены удостоверения для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная версия

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

Общедоступное клиентское приложение

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

Нужно будет создать и управлять MSAL.NET IPublicClientApplication.

IPublicClientApplication

Исключительно по коду

С помощью следующего кода создается экземпляр общедоступного клиентского приложения и обеспечивается вход пользователей в общедоступное облако Microsoft Azure с рабочей или учебной учетной записью либо с личной учетной записью Майкрософт.

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
    .Build();

Если вы планируете использовать интерактивную проверку подлинности или поток кода устройства, как показано ранее, используйте модификатор .WithRedirectUri.

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .Build();

Использование файлов конфигурации

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

PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
        .WithDefaultRedirectUri()
        .Build();

Более сложная конфигурация

Вы можете доработать процесс построения приложений, добавив несколько модификаторов. Так, если вы хотите, чтобы приложение было мультитенантным и развертывалось в национальном облаке, к примеру, в облаке правительства США, можно написать следующее:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .WithAadAuthority(AzureCloudInstance.AzureUsGovernment,
                         AadAuthorityAudience.AzureAdMultipleOrgs)
        .Build();

MSAL.NET также содержит модификатор для службы федерации Active Directory 2019.

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithAdfsAuthority("https://consoso.com/adfs")
        .Build();

Наконец, если вы хотите получить токены для арендатора Azure Active Directory (Azure AD) B2C, укажите вашего арендатора, как показано в следующем фрагменте кода:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
        .Build();

Подробнее

Чтобы узнать больше о том, как настроить настольное приложение MSAL.NET:

  • Список всех модификаторов, доступных в PublicClientApplicationBuilder, см. в справочной документации по PublicClientApplicationBuilder.
  • Для описания всех параметров, предоставленных в PublicClientApplicationOptions, см. PublicClientApplicationOptions в справочной документации.

Готовый пример с параметрами конфигурации

Представьте консольное приложение .NET с следующим appsettings.json файлом конфигурации:

{
  "Authentication": {
    "AzureCloudInstance": "AzurePublic",
    "AadAuthorityAudience": "AzureAdMultipleOrgs",
    "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
  },

  "WebAPI": {
    "MicrosoftGraphBaseEndpoint": "https://graph.microsoft.com"
  }
}

В этом файле не так много кода для чтения с помощью платформы конфигурации на базе .NET:

public class SampleConfiguration
{
 /// <summary>
 /// Authentication options
 /// </summary>
 public PublicClientApplicationOptions PublicClientApplicationOptions { get; set; }

 /// <summary>
 /// Base URL for Microsoft Graph (it varies depending on whether the application runs
 /// in Microsoft Azure public clouds or national or sovereign clouds)
 /// </summary>
 public string MicrosoftGraphBaseEndpoint { get; set; }

 /// <summary>
 /// Reads the configuration from a JSON file
 /// </summary>
 /// <param name="path">Path to the configuration json file</param>
 /// <returns>SampleConfiguration as read from the json file</returns>
 public static SampleConfiguration ReadFromJsonFile(string path)
 {
  // .NET configuration
  IConfigurationRoot Configuration;
  var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(path);
  Configuration = builder.Build();

  // Read the auth and graph endpoint configuration
  SampleConfiguration config = new SampleConfiguration()
  {
   PublicClientApplicationOptions = new PublicClientApplicationOptions()
  };
  Configuration.Bind("Authentication", config.PublicClientApplicationOptions);
  config.MicrosoftGraphBaseEndpoint =
  Configuration.GetValue<string>("WebAPI:MicrosoftGraphBaseEndpoint");
  return config;
 }
}

Чтобы создать приложение, напишите следующий код:

SampleConfiguration config = SampleConfiguration.ReadFromJsonFile("appsettings.json");
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(config.PublicClientApplicationOptions)
           .WithDefaultRedirectUri()
           .Build();

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

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

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