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


Включение параметров проверки подлинности в классическом приложении WPF с помощью Azure AD B2C

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

В этой статье описаны способы настройки и улучшения возможностей проверки подлинности Azure Active Directory B2C (Azure AD B2C) для классического приложения Windows Presentation Foundation (WPF).

Прежде чем начать, ознакомьтесь с проверкой подлинности в примере классического приложения WPF с помощью статьи Azure AD B2C .

Предварительное заполнение имени входа

Во время процесса входа пользователя ваше приложение может быть ориентировано на определенного пользователя. Когда приложение предназначено для пользователя, оно может указать в запросе авторизации параметр запроса login_hint с именем входа пользователя. Azure AD B2C автоматически заполняет имя входа, а пользователь должен указать только пароль.

Чтобы предварительно заполнить имя входа, сделайте следующее:

  1. Если вы используете настраиваемую политику, добавьте необходимое входное утверждение, как описано в разделе "Настройка прямого входа".
  2. Найдите объект конфигурации библиотеки проверки подлинности Майкрософт (MSAL), а затем добавьте withLoginHint() метод с указанием входа.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithLoginHint("bob@contoso.com")
    .ExecuteAsync();

Предварительно выберите поставщика удостоверений

Если вы настроили процесс входа приложения, чтобы включить социальные учетные записи, такие как Facebook, LinkedIn или Google, вы можете указать domain_hint параметр. Этот параметр запроса содержит указание Azure AD B2C о социальном поставщике удостоверений, который следует использовать для входа в систему. Например, если приложение указывает domain_hint=facebook.com, поток входа переходит непосредственно на страницу входа в Facebook.

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

  1. Проверьте доменное имя внешнего поставщика удостоверений. Для получения дополнительных сведений см. Перенаправление входа к социальному провайдеру.
  2. Создайте или используйте существующий Dictionary объект для хранения дополнительных параметров запроса.
  3. domain_hint Добавьте параметр с соответствующим доменным именем в словарь (например, facebook.com).
  4. Передайте объект дополнительных параметров запроса в метод объекта WithExtraQueryParameters конфигурации MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("domain_hint", "facebook.com");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Указание языка пользовательского интерфейса

Настройка языка в Azure AD B2C позволяет потоку пользователей соответствовать различным языкам в соответствии с потребностями клиентов. Дополнительные сведения см. в разделе "Настройка языка".

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

  1. Настройте настройку языка.
  2. Создайте или используйте существующий Dictionary объект для хранения дополнительных параметров запроса.
  3. ui_locales Добавьте параметр с соответствующим кодом языка в словарь (например, en-us).
  4. Передайте объект дополнительных параметров запроса в метод объекта WithExtraQueryParameters конфигурации MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("ui_locales", "en-us");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Передача настраиваемого параметра строки запроса

С помощью настраиваемых политик можно передать настраиваемый параметр строки запроса. Хорошим примером использования является динамическое изменение содержимого страницы.

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

  1. Настройте элемент ContentDefinitionParameters .
  2. Создайте или используйте существующий Dictionary объект для хранения дополнительных параметров запроса.
  3. Добавьте настраиваемый параметр строки запроса, например campaignId. Задайте значение параметра (например, germany-promotion).
  4. Передайте объект дополнительных параметров запроса в метод объекта WithExtraQueryParameters конфигурации MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("campaignId", "germany-promotion");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Передайте подсказку по токену идентификатора

Приложение проверяющей стороны может отправить входящий веб-токен JSON (JWT) в рамках запроса авторизации OAuth2. Входящий маркер — это указание о пользователе или запросе авторизации. Azure AD B2C проверяет токен, а затем извлекает утверждение.

Чтобы включить идентификационный токен в запрос аутентификации, сделайте следующее:

  1. В пользовательской политике определите технический профиль указания маркера идентификатора.
  2. В коде создайте или приобретите маркер идентификатора, а затем задайте маркер переменной (например, idToken).
  3. Создайте или используйте существующий Dictionary объект для хранения дополнительных параметров запроса.
  4. id_token_hint Добавьте параметр с соответствующей переменной, в которой хранится маркер идентификатора.
  5. Передайте объект дополнительных параметров запроса в атрибут объекта extraQueryParameters конфигурации MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("id_token_hint", idToken);

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Настройка логирования

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

Рекомендуется создать обратный вызов журнала MSAL и предоставить пользователям способ отправки журналов при наличии проблем с проверкой подлинности. MSAL предоставляет следующие уровни сведений о ведении журнала:

  • Ошибка: что-то пошло не так, и возникла ошибка. Этот уровень используется для отладки и выявления проблем.
  • Предупреждение: не обязательно произошла ошибка или сбой, но информация предназначена для диагностики и выявления проблем.
  • Сведения: MSAL ведет журнал событий, предназначенных исключительно для информационных целей и не обязательно для отладки.
  • Подробные сведения. Это уровень по умолчанию. MSAL регистрирует полные сведения о поведении библиотеки.

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

В следующем фрагменте кода показано, как настроить ведение журнала MSAL:

PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
    .WithB2CAuthority(AuthoritySignUpSignIn)
    .WithRedirectUri(RedirectUri)
    .WithLogging(Log, LogLevel.Info, false) // don't log P(ersonally) I(dentifiable) I(nformation) details on a regular basis
    .Build();

Настройка URI перенаправления

Во время процесса регистрации классических приложений при выборе URI перенаправления следует учитывать следующие важные аспекты:

  • Разработка. Для разработки в классических приложениях можно задать URI http://localhostперенаправления в значение, а Azure AD B2C будет учитывать любой порт в запросе. Если зарегистрированный URI содержит порт, Azure AD B2C будет использовать только этот порт. Например, если зарегистрированный URI перенаправления имеет значение http://localhost, URI перенаправления в запросе может быть http://localhost:<randomport>. Если зарегистрированный URI перенаправления имеет значение http://localhost:8080, URI перенаправления в запросе должен быть http://localhost:8080.
  • Уникальный: схема URI перенаправления должна быть уникальной для каждого приложения. В примере com.onmicrosoft.contosob2c.exampleapp://oauth/redirect, com.onmicrosoft.contosob2c.exampleapp — схема. Следует следовать этому шаблону. Если два приложения используют одну и ту же схему, пользователи получают выбор приложений. Если пользователи неправильно выбирают, вход завершается ошибкой.
  • Завершено. URI перенаправления должен иметь как схему, так и путь. Путь должен содержать по крайней мере один символ косой черты после домена. Например, //oauth/ работает и //oauth завершается сбоем. Не включайте специальные символы в универсальный код ресурса (URI). Например, символ подчеркивания (_) не допускается.

Дальнейшие шаги