Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".
В этой статье используется пример классического приложения Windows Presentation Foundation (WPF) для иллюстрации добавления проверки подлинности Azure Active Directory B2C (Azure AD B2C) в классические приложения.
Обзор
OpenID Connect (OIDC) представляет собой протокол проверки подлинности, основанный на OAuth 2.0. Вы можете использовать OIDC для безопасного входа пользователей в приложение. В этом примере классического приложения используется библиотека проверки подлинности Майкрософт (MSAL) с потоком проверки подлинности OIDC для потока проверки подлинности Для Exchange (PKCE). MSAL — это библиотека, предоставляемая Корпорацией Майкрософт, которая упрощает добавление поддержки проверки подлинности и авторизации в классические приложения.
Поток входа включает следующие действия.
- Пользователи открывают приложение и выбирают вход.
- Приложение открывает системный браузер классического устройства и запускает запрос проверки подлинности в Azure AD B2C.
- Пользователи зарегистрируются или войдут в систему, сбросят пароль или войдут с помощью социальной учетной записи.
- После успешного входа пользователей Azure AD B2C возвращает код авторизации приложению.
- Приложение выполняет следующие действия:
- Он меняет код авторизации на токен идентификатора, токен доступа и токен обновления.
- Он считывает информацию токена идентификатора.
- Он сохраняет маркеры в кэше в памяти для последующего использования.
Обзор регистрации приложения
Чтобы включить вход приложения в Azure AD B2C и вызвать веб-API, зарегистрируйте два приложения в каталоге Azure AD B2C.
Регистрация классического приложения позволяет приложению войти в систему с помощью Azure AD B2C. Во время регистрации приложения укажите универсальный код ресурса (URI перенаправления). URI перенаправления — это конечная точка, в которую пользователи перенаправляются Azure AD B2C после проверки подлинности с помощью Azure AD B2C. Процесс регистрации приложения создает идентификатор приложения, также известный как идентификатор клиента, который однозначно идентифицирует классическое приложение (например, идентификатор приложения: 1).
Регистрация веб-API позволяет приложению вызывать защищенный веб-API. Регистрация предоставляет доступ к разрешениям веб-API (областям). Процесс регистрации приложения создает идентификатор приложения, который однозначно идентифицирует веб-API (например, идентификатор приложения: 2). Предоставьте классическому приложению (идентификатор приложения: 1) разрешения для областей веб-API (идентификатор приложения: 2).
Регистрация и архитектура приложения показаны на следующих схемах:
Вызов веб-API-интерфейса
После завершения проверки подлинности пользователи взаимодействуют с приложением, которое вызывает защищенный веб-API. Этот веб-API использует проверку подлинности посредством маркера носителя. Маркер носителя — это маркер доступа, полученный приложением от Azure AD B2C. Приложение передает маркер в заголовке авторизации HTTPS-запроса.
Authorization: Bearer <access token>
Если область действия токена доступа не соответствует областям веб-API, библиотека аутентификации получает новый токен доступа с правильными областями.
Поток выхода
Процесс выхода из системы включает следующие шаги:
- Пользователи выходят из приложения.
- Приложение очищает объекты сеанса, а библиотека проверки подлинности очищает свой кэш маркеров.
- Приложение перенаправляет пользователя в конечную точку выхода Azure AD B2C, чтобы завершить сеанс Azure AD B2C.
- Пользователи перенаправляются обратно в приложение.
Предпосылки
Компьютер под управлением Visual Studio 2019 с разработкой классических приложений .NET.
Шаг 1. Настройка потока пользователя
Если пользователи пытаются войти в приложение, оно инициирует запрос проверки подлинности к конечной точке авторизации через поток пользователя. Соответствующий поток пользователя определяет и контролирует взаимодействие с пользователем. Когда пользователи завершают пользовательский поток, Azure AD B2C создает токен и перенаправляет пользователей обратно в ваше приложение.
Создайте поток пользователя или пользовательскую политику, если вы еще не сделали этого. Повторите эти шаги, чтобы создать три отдельных пользовательских потока:
- Объединенный пользовательский поток входа и регистрации, например
susi
. Этот пользовательский поток также поддерживает функцию Забыли пароль?. - Последовательность действий пользователя для редактирования профиля, например
edit_profile
. - Процесс сброса пароля, например
reset_password
.
Azure AD B2C добавляет B2C_1_
в начало имени пользовательского потока. Например, susi
преобразуется в B2C_1_susi
.
Шаг 2. Регистрация приложений
Создайте классическое приложение и регистрацию веб-API и укажите области веб-API.
Шаг 2.1. Регистрация веб-приложения API
Чтобы создать регистрацию приложения веб-API (идентификатор приложения: 2), выполните следующие действия.
Войдите на портал Azure.
Убедитесь, что вы используете каталог, содержащий арендатора Azure AD B2C. На панели инструментов портала выберите значок Каталоги и подписки.
В настройках портала на странице Каталоги и подписки найдите свой каталог Azure AD B2C в списке Имя каталога и выберите Переключить.
В портале Azure найдите и выберите Azure AD B2C.
Выберите регистрации приложений и нажмите кнопку "Создать регистрацию".
В поле Имя введите имя приложения (например, my-api1). Оставьте значения по умолчанию для URI перенаправления и поддерживаемых типов учетных записей.
Выберите Зарегистрировать.
Когда регистрация приложения завершится, выберите Обзор.
Запишите значение идентификатора приложения (клиента) для дальнейшего использования при настройке веб-приложения.
Шаг 2.2. Настройка областей веб-API
Выберите созданное приложение my-api1 (идентификатор приложения: 2), чтобы открыть страницу Обзор.
В разделе "Управление" выберите "Предоставить API".
Рядом с полем URI идентификатора приложения щелкните ссылку Задать. Замените значение по умолчанию (уникальный идентификатор) уникальным именем (например, tasks-api), а затем нажмите Сохранить.
Когда веб-приложение запрашивает маркер доступа для веб-API, оно должно добавить этот URI в качестве префикса для каждой области, определяемой для API.
В разделе "Области", определенные этим API, выберите "Добавить область".
Чтобы создать область, определяющую доступ для чтения к API, сделайте следующее.
- В поле Имя области введите tasks.read.
- В качестве отображаемого имени согласия администратора укажите Доступ на чтение к API задач.
- В качестве описания согласия администратора введите Предоставляет доступ на чтение к API задач.
Выберите "Добавить область".
Выберите Добавить область и добавьте область, определяющую доступ для записи к API:
- В поле Имя области введите tasks.write.
- В качестве отображаемого имени согласия администратора укажите Право записи для API задач.
- В качестве описания согласия администратора введите Предоставляет доступ для записи к API задач.
Выберите "Добавить область".
Шаг 2.3. Регистрация классического приложения
Чтобы создать регистрацию классических приложений, сделайте следующее:
- Войдите на портал Azure.
- Выберите регистрации приложений и нажмите кнопку "Создать регистрацию".
- В разделе "Имя" введите имя приложения (например, desktop-app1).
- В разделе "Поддерживаемые типы учетных записей" выберите "Учетные записи" в любом поставщике удостоверений или каталоге организации (для проверки подлинности пользователей с помощью потоков пользователей).
- В разделе URI перенаправления выберите общедоступный клиент или собственный (настольный компьютер и рабочий стол), а затем в поле URL-адреса введите
https://your-tenant-name.b2clogin.com/oauth2/nativeclient
. Заменитеyour-tenant-name
именем клиента. Дополнительные параметры см. в разделе "Настройка URI перенаправления". - Выберите Зарегистрировать.
- Когда регистрация приложения завершится, выберите Обзор.
- Запишите идентификатор приложения (клиента) для последующего использования при настройке классического приложения.
Шаг 2.4. Предоставление разрешений классического приложения для веб-API
Чтобы предоставить своему приложению (идентификатор приложения: 1) разрешения, выполните следующие действия.
Выберите Регистрация приложений, а затем выберите созданное вами приложение (идентификатор приложения: 1).
В разделе Управление выберите Разрешения API.
В разделе Настроенные разрешения выберите Добавить разрешение.
Выберите вкладку Мои API.
Выберите API (идентификатор приложения: 2), к которому веб-приложению должен быть предоставлен доступ. Например, введите my-api1.
Под Разрешение разверните tasks, а затем выберите ранее определенные области (например, tasks.read и tasks.write).
Выберите Добавить разрешения.
Выберите Предоставить согласие администратора для <имя арендатора>.
Выберите Да.
Выберите Обновить, а затем убедитесь, что Разрешено для... отображается в разделе Состояние для обеих областей.
В списке настроенных разрешений выберите свою область, а затем скопируйте полное имя области.
Шаг 3. Настройка примера веб-API
Этот пример получает маркер доступа с соответствующими областями, которые классическое приложение может использовать для веб-API. Чтобы вызвать веб-API из кода, сделайте следующее:
- Используйте существующий веб-API или создайте новый. Дополнительные сведения см. в статье "Включение проверки подлинности в собственном веб-API" с помощью Azure AD B2C.
- После настройки веб-API скопируйте URI конечной точки веб-API. Вы будете использовать конечную точку веб-API в следующих шагах.
Подсказка
Если у вас нет веб-API, вы по-прежнему можете запустить этот пример. В этом случае приложение возвращает маркер доступа, но не сможет вызывать веб-API.
Шаг 4. Получение примера классического приложения WPF
Скачайте файл .zip или клонируйте пример веб-приложения из репозитория GitHub.
git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-desktop.git
Откройте решение active-directory-b2c-wpf ( файл active-directory-b2c-wpf.sln ) в Visual Studio.
Шаг 5. Настройка примера классического приложения
В проекте active-directory-b2c-wpf откройте файл App.xaml.cs . Члены класса содержат информацию о вашем поставщике идентификационных данных Azure AD B2C. Классическое приложение использует эти сведения для установления отношения доверия с Azure AD B2C, входа пользователей и выхода, получения маркеров и проверки их.
Обновите следующие члены класса:
Ключ | Ценность |
---|---|
TenantName |
Первая часть имени арендатора в Azure AD B2C tenant name (например, contoso.b2clogin.com ). |
ClientId |
Идентификатор классического приложения из шага 2.3. |
PolicySignUpSignIn |
Поток регистрации или входа или настраиваемая политика, созданная на шаге 1. |
PolicyEditProfile |
Поток редактирования профиля пользователя или настраиваемая политика, созданная на шаге 1. |
ApiEndpoint |
(Необязательно) Конечная точка веб-API, созданная на шаге 3 (например, https://contoso.azurewebsites.net/hello ). |
ApiScopes |
Области веб-API, созданные на шаге 2.4. |
Окончательный App.xaml.cs файл должен выглядеть следующим кодом C#:
public partial class App : Application
{
private static readonly string TenantName = "contoso";
private static readonly string Tenant = $"{TenantName}.onmicrosoft.com";
private static readonly string AzureAdB2CHostname = $"{TenantName}.b2clogin.com";
private static readonly string ClientId = "<web-api-app-application-id>";
private static readonly string RedirectUri = $"https://{TenantName}.b2clogin.com/oauth2/nativeclient";
public static string PolicySignUpSignIn = "b2c_1_susi";
public static string PolicyEditProfile = "b2c_1_edit_profile";
public static string PolicyResetPassword = "b2c_1_reset";
public static string[] ApiScopes = { $"https://{Tenant}//api/tasks.read" };
public static string ApiEndpoint = "https://contoso.azurewebsites.net/hello";
Шаг 6. Запуск и тестирование классического приложения
Выберите F5, чтобы создать и запустить пример.
Выберите "Войти", а затем зарегистрируйтесь или войдите с помощью локальной или социальной учетной записи Azure AD B2C.
После успешной регистрации или входа в систему на нижней панели приложения WPF отображаются сведения о маркере.
Выберите API вызова для вызова веб-API.
Дальнейшие шаги
Узнайте, как настроить параметры проверки подлинности в классическом приложении WPF с помощью Azure AD B2C.