Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Начиная с 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 автоматически заполняет имя входа, а пользователь должен указать только пароль.
Чтобы предварительно заполнить имя входа, сделайте следующее:
- Если вы используете настраиваемую политику, добавьте необходимое входное утверждение, как описано в разделе "Настройка прямого входа".
- Найдите объект конфигурации библиотеки проверки подлинности Майкрософт (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.
Чтобы перенаправить пользователей к внешнему поставщику удостоверений, сделайте следующее:
- Проверьте доменное имя внешнего поставщика удостоверений. Для получения дополнительных сведений см. Перенаправление входа к социальному провайдеру.
- Создайте или используйте существующий
Dictionary
объект для хранения дополнительных параметров запроса. -
domain_hint
Добавьте параметр с соответствующим доменным именем в словарь (например,facebook.com
). - Передайте объект дополнительных параметров запроса в метод объекта
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 позволяет потоку пользователей соответствовать различным языкам в соответствии с потребностями клиентов. Дополнительные сведения см. в разделе "Настройка языка".
Чтобы задать предпочтительный язык, сделайте следующее:
- Настройте настройку языка.
- Создайте или используйте существующий
Dictionary
объект для хранения дополнительных параметров запроса. -
ui_locales
Добавьте параметр с соответствующим кодом языка в словарь (например,en-us
). - Передайте объект дополнительных параметров запроса в метод объекта
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();
Передача настраиваемого параметра строки запроса
С помощью настраиваемых политик можно передать настраиваемый параметр строки запроса. Хорошим примером использования является динамическое изменение содержимого страницы.
Чтобы передать настраиваемый параметр строки запроса, сделайте следующее:
- Настройте элемент ContentDefinitionParameters .
- Создайте или используйте существующий
Dictionary
объект для хранения дополнительных параметров запроса. - Добавьте настраиваемый параметр строки запроса, например
campaignId
. Задайте значение параметра (например,germany-promotion
). - Передайте объект дополнительных параметров запроса в метод объекта
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 проверяет токен, а затем извлекает утверждение.
Чтобы включить идентификационный токен в запрос аутентификации, сделайте следующее:
- В пользовательской политике определите технический профиль указания маркера идентификатора.
- В коде создайте или приобретите маркер идентификатора, а затем задайте маркер переменной (например,
idToken
). - Создайте или используйте существующий
Dictionary
объект для хранения дополнительных параметров запроса. -
id_token_hint
Добавьте параметр с соответствующей переменной, в которой хранится маркер идентификатора. - Передайте объект дополнительных параметров запроса в атрибут объекта
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). Например, символ подчеркивания (_) не допускается.
Дальнейшие шаги
- Дополнительные сведения см. в разделе MSAL для .NET, UWP и параметров конфигурации NetCore.