Классическое приложение, которое вызывает веб-API. Настройка кода

Вы создали приложение, и теперь узнаете, как настроить код с помощью координат приложения.

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

Перечисленные ниже библиотеки Майкрософт поддерживают классические приложения.

Язык или платформа Проект на сайте
GitHub
Пакет Получение
из этих вариантов
Выполнение входа пользователей Доступ к веб-API Общедоступная версия (GA) или
Общедоступная предварительная версия1
Electron MSAL Node.js msal-node Библиотека может запросить маркеры идентификатора для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная предварительная версия
Java MSAL4J msal4j Библиотека может запросить маркеры идентификатора для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная версия
macOS (Swift/Obj-C) MSAL для iOS и macOS MSAL Руководство Библиотека может запросить маркеры идентификатора для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная версия
UWP MSAL для .NET Microsoft.Identity.Client Руководство Библиотека может запросить маркеры идентификатора для входа пользователя. Библиотека может запросить маркеры доступа для защищенных веб-API. Общедоступная версия
WPF 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 (AD FS) 2019:

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

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

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

Подробнее

Дополнительные сведения о настройке классического приложения MSAL.NET:

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

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

Представьте консольное приложение .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, как показано выше.

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

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