Verificatieopties inschakelen in een WPF-bureaublad-app met behulp van Azure AD B2C

In dit artikel worden manieren beschreven waarop u de verificatie-ervaring van Azure Active Directory B2C (Azure AD B2C) voor uw wpf-bureaubladtoepassing (Windows Presentation Foundation) kunt aanpassen en verbeteren.

Voordat u begint, moet u vertrouwd raken met het artikel Verificatie configureren in een voorbeeld-WPF-bureaublad-app met behulp van Azure AD B2C.

De aanmeldingsnaam vooraf invullen

Tijdens een gebruikersbeleving voor aanmelden kan uw app zich op een specifieke gebruiker richten. Wanneer een app zich op een gebruiker richt, geeft de app in de autorisatieaanvraag mogelijk de queryparameter login_hint op met de aanmeldingsnaam van de gebruiker. Azure AD B2C vult automatisch de aanmeldingsnaam in en de gebruiker hoeft alleen het wachtwoord op te geven.

Ga als volgt te werk om de aanmeldingsnaam vooraf in te vullen:

  1. Als u een aangepast beleid gebruikt, voegt u de vereiste invoerclaim toe, zoals beschreven in Directe aanmelding instellen.
  2. Zoek naar uw MSAL-configuratieobject (Microsoft Authentication Library) en voeg vervolgens de methode withLoginHint() toe met de aanmeldingshint.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithLoginHint("bob@contoso.com")
    .ExecuteAsync();

Een id-provider vooraf selecteren

Als u socialemedia-accounts, zoals Facebook, LinkedIn en Google, in de aanmeldbeleving voor uw toepassing hebt geconfigureerd, kunt u de parameter domain_hint opgeven. Deze queryparameter biedt een hint naar Azure AD B2C over de id-provider voor sociale media die moet worden gebruikt voor aanmelden. Als de toepassing bijvoorbeeld domain_hint=facebook.com opgeeft, leidt de aanmeldingsstroom rechtstreeks naar de aanmeldingspagina van Facebook.

Ga als volgt te werk om gebruikers om te leiden naar een externe id-provider:

  1. Controleer de domeinnaam van de externe id-provider. Zie Aanmelden omleiden naar een sociale provider voor meer informatie.
  2. Maak of gebruik een bestaand Dictionary object om extra queryparameters op te slaan.
  3. Voeg de domain_hint parameter met de bijbehorende domeinnaam toe aan de woordenlijst (bijvoorbeeld facebook.com).
  4. Geef het extra queryparametersobject door aan de methode van WithExtraQueryParameters het MSAL-configuratieobject.
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();

De taal van de gebruikersinterface opgeven

Met taalaanpassing in Azure AD B2C kunt u verschillende talen in uw gebruikersstroom opnemen om aan de behoeften van uw klanten te voldoen. Zie Taalaanpassing voor meer informatie.

Ga als volgt te werk om de voorkeurstaal in te stellen:

  1. Taalaanpassing configureren.
  2. Maak of gebruik een bestaand Dictionary object om extra queryparameters op te slaan.
  3. Voeg de ui_locales parameter met de bijbehorende taalcode toe aan de woordenlijst (bijvoorbeeld en-us).
  4. Geef het extra queryparametersobject door aan de methode van WithExtraQueryParameters het MSAL-configuratieobject.
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();

Een aangepaste querytekenreeksparameter doorgeven

Met aangepast beleid kunt u een aangepaste querytekenreeksparameter doorgeven. Dit is bijvoorbeeld handig wanneer u de pagina-inhoud dynamisch wilt wijzigen.

Ga als volgt te werk om een aangepaste querytekenreeksparameter door te geven:

  1. Configureer het element ContentDefinitionParameters.
  2. Maak of gebruik een bestaand Dictionary object om extra queryparameters op te slaan.
  3. Voeg de aangepaste queryreeksparameter, zoals campaignId, toe. Stel de parameterwaarde in (bijvoorbeeld germany-promotion).
  4. Geef het extra queryparametersobject door aan de methode van WithExtraQueryParameters het MSAL-configuratieobject.
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();

Een hint voor een id-token doorgeven

Een Relying Party-toepassing kan een binnenkomend JSON Web Token (JWT) verzenden als onderdeel van de OAuth2-autorisatieaanvraag. Het binnenkomende token is een hint over de gebruiker of de autorisatieaanvraag. Azure AD B2C valideert het token en extraheert vervolgens de claim.

Ga als volgt te werk om een hint voor het id-token in de verificatieaanvraag op te nemen:

  1. Definieer in uw aangepaste beleid een technisch profiel voor de hint voor het id-token.
  2. Genereer een id-token in uw code of haal deze op en stel het token vervolgens in op een variabele (bijvoorbeeld idToken).
  3. Maak of gebruik een bestaand Dictionary object om extra queryparameters op te slaan.
  4. Voeg de parameter id_token_hint toe met de bijbehorende variabele waarin het id-token wordt opgeslagen.
  5. Geef het extra queryparametersobject door aan het kenmerk van extraQueryParameters het MSAL-configuratieobject.
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();

Logboekregistratie configureren

De MSAL-bibliotheek genereert logboekberichten die u kunnen helpen bij het vaststellen van problemen. De app kan logboekregistratie configureren. De app kan u ook aangepaste controle geven over het detailniveau en over de registratie van persoonlijke en organisatorische gegevens.

We raden u aan een callback voor MSAL-logboekregistratie te maken en gebruikers een manier te bieden om logboeken in te dienen wanneer ze verificatieproblemen ondervinden. MSAL biedt de volgende detailniveaus voor logboekregistratie:

  • Fout: er is iets misgegaan en er is een fout gegenereerd. Dit niveau wordt gebruikt voor het opsporen van fouten en het identificeren van problemen.
  • Waarschuwing: er is niet noodzakelijkerwijs een fout of fout opgetreden, maar de informatie is bedoeld voor diagnoses en het opsporen van problemen.
  • Info: MSAL registreert gebeurtenissen die zijn bedoeld voor informatieve doeleinden en niet noodzakelijkerwijs voor foutopsporing.
  • Uitgebreid: dit is het standaardniveau. MSAL registreert de volledige details van het bibliotheekgedrag.

De MSAL-logboekregistratie legt standaard geen persoonlijke of organisatorische gegevens vast. De bibliotheek biedt u de optie om logboekregistratie van persoonlijke en organisatorische gegevens in te schakelen.

Het volgende codefragment laat zien hoe u MSAL-logboekregistratie configureert:

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();

De omleidings-URI configureren

Houd tijdens het registratieproces van de bureaublad-app rekening met de volgende belangrijke overwegingen wanneer u een omleidings-URI kiest:

  • Ontwikkeling: Voor ontwikkelingsgebruik in bureaublad-apps kunt u de omleidings-URI instellen op http://localhosten Azure AD B2C elke poort in de aanvraag respecteert. Als de geregistreerde URI een poort bevat, wordt alleen deze poort door Azure AD B2C gebruikt. Als de geregistreerde omleidings-URI bijvoorbeeld http://localhost is, kan de omleidings-URI in de aanvraag http://localhost:<randomport> zijn. Als de geregistreerde omleidings-URI http://localhost:8080 is, moet de omleidings-URI in de aanvraag http://localhost:8080 zijn.
  • Uniek: Het schema van de omleidings-URI moet voor elke toepassing uniek zijn. In het voorbeeld com.onmicrosoft.contosob2c.exampleapp://oauth/redirect is com.onmicrosoft.contosob2c.exampleapp het schema. Dit patroon moet worden gevolgd. Als twee toepassingen hetzelfde schema delen, krijgen gebruikers een keuze uit toepassingen. Als gebruikers een onjuiste keuze maken, mislukt de aanmelding.
  • Volledig: De omleidings-URI moet een schema en een pad hebben. Het pad moet ten minste één slash bevatten na het domein. Werkt bijvoorbeeld //oauth/ en //oauth mislukt. Neem geen speciale tekens op in de URI. Het onderstrepingsteken (_) is bijvoorbeeld niet toegestaan.

Volgende stappen