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