Włączanie opcji uwierzytelniania w aplikacji klasycznej WPF przy użyciu Azure AD B2C

W tym artykule opisano sposoby dostosowywania i ulepszania środowiska uwierzytelniania usługi Azure Active Directory B2C (Azure AD B2C) dla aplikacji klasycznej Windows Presentation Foundation (WPF).

Przed rozpoczęciem zapoznaj się z artykułem Konfigurowanie uwierzytelniania w przykładowej aplikacji klasycznej WPF przy użyciu Azure AD B2C.

Wstępnie wypełnij nazwę logowania

Podczas podróży użytkownika logowania aplikacja może być skierowana do określonego użytkownika. Gdy aplikacja jest przeznaczona dla użytkownika, może określić w żądaniu login_hint autoryzacji parametr zapytania z nazwą logowania użytkownika. Azure AD B2C automatycznie wypełnia nazwę logowania, a użytkownik musi podać tylko hasło.

Aby wstępnie wypełniać nazwę logowania, wykonaj następujące czynności:

  1. Jeśli używasz zasad niestandardowych, dodaj wymagane oświadczenie wejściowe zgodnie z opisem w temacie Konfigurowanie logowania bezpośredniego.
  2. Poszukaj obiektu konfiguracji biblioteki Microsoft Authentication Library (MSAL), a następnie dodaj metodę withLoginHint() z wskazówką logowania.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithLoginHint("bob@contoso.com")
    .ExecuteAsync();

Wstępne wybieranie dostawcy tożsamości

Jeśli skonfigurowano logowanie dla aplikacji tak, aby obejmowała konta społecznościowe, takie jak Facebook, LinkedIn lub Google, możesz określić domain_hint parametr . Ten parametr zapytania zawiera wskazówkę dla Azure AD B2C o dostawcy tożsamości społecznościowych, który powinien być używany do logowania. Jeśli na przykład aplikacja określa domain_hint=facebook.comwartość , przepływ logowania przechodzi bezpośrednio do strony logowania w serwisie Facebook.

Aby przekierować użytkowników do zewnętrznego dostawcy tożsamości, wykonaj następujące czynności:

  1. Sprawdź nazwę domeny zewnętrznego dostawcy tożsamości. Aby uzyskać więcej informacji, zobacz Przekierowywanie logowania do dostawcy społecznościowego.
  2. Utwórz istniejący obiekt lub użyj go Dictionary do przechowywania dodatkowych parametrów zapytania.
  3. domain_hint Dodaj parametr z odpowiednią nazwą domeny do słownika (na przykład facebook.com).
  4. Przekaż obiekt dodatkowych parametrów zapytania do metody obiektu konfiguracji biblioteki 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();

Określanie języka interfejsu użytkownika

Dostosowywanie języka w usłudze Azure AD B2C umożliwia przepływowi użytkownika dostosowanie różnych języków do potrzeb klientów. Aby uzyskać więcej informacji, zobacz Dostosowywanie języka.

Aby ustawić preferowany język, wykonaj następujące czynności:

  1. Konfigurowanie dostosowywania języka.
  2. Utwórz istniejący obiekt lub użyj go Dictionary do przechowywania dodatkowych parametrów zapytania.
  3. ui_locales Dodaj parametr z odpowiednim kodem języka do słownika (na przykład en-us).
  4. Przekaż obiekt dodatkowych parametrów zapytania do metody obiektu konfiguracji biblioteki 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();

Przekazywanie niestandardowego parametru ciągu zapytania

Za pomocą zasad niestandardowych można przekazać niestandardowy parametr ciągu zapytania. Dobrym przykładem przypadku użycia jest dynamiczna zmiana zawartości strony.

Aby przekazać niestandardowy parametr ciągu zapytania, wykonaj następujące czynności:

  1. Skonfiguruj element ContentDefinitionParameters .
  2. Utwórz istniejący obiekt lub użyj go Dictionary do przechowywania dodatkowych parametrów zapytania.
  3. Dodaj niestandardowy parametr ciągu zapytania, taki jak campaignId. Ustaw wartość parametru (na przykład germany-promotion).
  4. Przekaż obiekt dodatkowych parametrów zapytania do metody obiektu konfiguracji biblioteki 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();

Przekazywanie wskazówki dotyczącej tokenu identyfikatora

Aplikacja jednostki uzależnionej może wysyłać przychodzący token internetowy JSON (JWT) w ramach żądania autoryzacji OAuth2. Token przychodzący to wskazówka dotycząca użytkownika lub żądania autoryzacji. Azure AD B2C weryfikuje token, a następnie wyodrębnia oświadczenie.

Aby uwzględnić wskazówkę tokenu identyfikatora w żądaniu uwierzytelniania, wykonaj następujące czynności:

  1. W zasadach niestandardowych zdefiniuj profil techniczny wskazówki dotyczącej tokenu identyfikatora.
  2. W kodzie wygeneruj lub uzyskaj token identyfikatora, a następnie ustaw token na zmienną (na przykład idToken).
  3. Utwórz istniejący obiekt lub użyj go Dictionary do przechowywania dodatkowych parametrów zapytania.
  4. id_token_hint Dodaj parametr z odpowiednią zmienną, która przechowuje token identyfikatora.
  5. Przekaż obiekt dodatkowych parametrów zapytania do atrybutu obiektu konfiguracji biblioteki 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();

Konfigurowanie rejestrowania

Biblioteka MSAL generuje komunikaty dziennika, które mogą pomóc zdiagnozować problemy. Aplikacja może skonfigurować rejestrowanie. Aplikacja może również zapewnić ci niestandardową kontrolę nad poziomem szczegółowości oraz informacją o tym, czy są rejestrowane dane osobiste i organizacyjne.

Zalecamy utworzenie wywołania zwrotnego rejestrowania biblioteki MSAL i zapewnienie użytkownikom możliwości przesyłania dzienników w przypadku problemów z uwierzytelnianiem. Biblioteka MSAL udostępnia następujące poziomy szczegółów rejestrowania:

  • Błąd: Wystąpił problem i został wygenerowany błąd. Ten poziom służy do debugowania i identyfikowania problemów.
  • Ostrzeżenie: Niekoniecznie wystąpił błąd lub błąd, ale informacje są przeznaczone do diagnostyki i ustalania problemów.
  • Informacje: biblioteka MSAL rejestruje zdarzenia przeznaczone do celów informacyjnych i niekoniecznie do debugowania.
  • Pełne: jest to poziom domyślny. Biblioteka MSAL rejestruje pełne szczegóły zachowania biblioteki.

Domyślnie rejestrator biblioteki MSAL nie przechwytuje żadnych danych osobowych ani organizacyjnych. Biblioteka umożliwia włączenie rejestrowania danych osobowych i organizacyjnych, jeśli zdecydujesz się to zrobić.

Poniższy fragment kodu przedstawia sposób konfigurowania rejestrowania biblioteki 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();

Konfigurowanie identyfikatora URI przekierowania

Podczas procesu rejestracji aplikacji klasycznej podczas wybierania identyfikatora URI przekierowania należy pamiętać o następujących ważnych kwestiach:

  • Programowanie: w przypadku programowania w aplikacjach klasycznych można ustawić identyfikator URI przekierowania na http://localhost, a Azure AD B2C będzie uwzględniać dowolny port w żądaniu. Jeśli zarejestrowany identyfikator URI zawiera port, Azure AD B2C użyje tylko tego portu. Jeśli na przykład zarejestrowany identyfikator URI przekierowania to http://localhost, identyfikator URI przekierowania w żądaniu może mieć wartość http://localhost:<randomport>. Jeśli zarejestrowany identyfikator URI przekierowania to http://localhost:8080, identyfikator URI przekierowania w żądaniu musi mieć wartość http://localhost:8080.
  • Unikatowe: schemat identyfikatora URI przekierowania musi być unikatowy dla każdej aplikacji. W przykładzie com.onmicrosoft.contosob2c.exampleapp://oauth/redirect jest to schemat com.onmicrosoft.contosob2c.exampleapp. Należy przestrzegać tego wzorca. Jeśli dwie aplikacje współużytkują ten sam schemat, użytkownicy otrzymają wybór aplikacji. Jeśli użytkownicy wybiorą się nieprawidłowo, logowanie zakończy się niepowodzeniem.
  • Ukończono: identyfikator URI przekierowania musi mieć zarówno schemat, jak i ścieżkę. Ścieżka musi zawierać co najmniej jeden znak ukośnika po domenie. Na przykład //oauth/ działa i //oauth kończy się niepowodzeniem. Nie uwzględniaj znaków specjalnych w identyfikatorze URI. Na przykład znak podkreślenia (_) nie jest dozwolony.

Następne kroki