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