Dela via


Aktivera autentiseringsalternativ i en WPF-skrivbordsapp med hjälp av Azure AD B2C

I den här artikeln beskrivs hur du kan anpassa och förbättra autentiseringsupplevelsen i Azure Active Directory B2C (Azure AD B2C) för ditt Windows Presentation Foundation-skrivbordsprogram (WPF).

Innan du börjar bör du bekanta dig med artikeln Konfigurera autentisering i en WPF-exempelapp med hjälp av Azure AD B2C.

Fyll i inloggningsnamnet i förväg

Under en inloggningsanvändarresa kan din app riktas mot en viss användare. När en app riktar sig till en användare kan den i auktoriseringsbegäran login_hint ange frågeparametern med användarens inloggningsnamn. Azure AD B2C fyller automatiskt i inloggningsnamnet och användaren behöver bara ange lösenordet.

Gör följande för att fylla i inloggningsnamnet i förväg:

  1. Om du använder en anpassad princip lägger du till det inkommande anspråk som krävs enligt beskrivningen i Konfigurera direkt inloggning.
  2. Leta efter konfigurationsobjektet för Microsoft Authentication Library (MSAL) och lägg sedan till withLoginHint() metoden med inloggningstipset.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithLoginHint("bob@contoso.com")
    .ExecuteAsync();

Förmarkera en identitetsprovider

Om du har konfigurerat inloggningsresan för ditt program för att inkludera sociala konton, till exempel Facebook, LinkedIn eller Google, kan du ange parametern domain_hint . Den här frågeparametern ger ett tips om Azure AD B2C om den sociala identitetsprovider som ska användas för inloggning. Om programmet till exempel anger går inloggningsflödet domain_hint=facebook.comdirekt till Facebook-inloggningssidan.

Om du vill omdirigera användare till en extern identitetsprovider gör du följande:

  1. Kontrollera domännamnet för din externa identitetsprovider. Mer information finns i Omdirigera inloggning till en social provider.
  2. Skapa eller använd ett befintligt Dictionary objekt för att lagra extra frågeparametrar.
  3. Lägg till parametern domain_hint med motsvarande domännamn i ordlistan (till exempel facebook.com).
  4. Skicka det extra frågeparameterobjektet till MSAL-konfigurationsobjektets WithExtraQueryParameters -metod.
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();

Ange användargränssnittsspråket

Språkanpassning i Azure AD B2C gör att ditt användarflöde kan hantera en mängd olika språk som passar dina kunders behov. Mer information finns i Språkanpassning.

Gör följande för att ange önskat språk:

  1. Konfigurera språkanpassning.
  2. Skapa eller använd ett befintligt Dictionary objekt för att lagra extra frågeparametrar.
  3. Lägg till parametern ui_locales med motsvarande språkkod i ordlistan (till exempel en-us).
  4. Skicka det extra frågeparameterobjektet till MSAL-konfigurationsobjektets WithExtraQueryParameters -metod.
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();

Skicka en anpassad frågesträngsparameter

Med anpassade principer kan du skicka en anpassad frågesträngsparameter. Ett bra användningsexempel är när du vill ändra sidinnehållet dynamiskt.

Om du vill skicka en anpassad frågesträngsparameter gör du följande:

  1. Konfigurera elementet ContentDefinitionParameters .
  2. Skapa eller använd ett befintligt Dictionary objekt för att lagra extra frågeparametrar.
  3. Lägg till den anpassade frågesträngsparametern, till exempel campaignId. Ange parametervärdet (till exempel germany-promotion).
  4. Skicka det extra frågeparameterobjektet till MSAL-konfigurationsobjektets WithExtraQueryParameters -metod.
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();

Skicka ett ID-tokentips

Ett förlitande part-program kan skicka en inkommande JSON-webbtoken (JWT) som en del av OAuth2-auktoriseringsbegäran. Den inkommande token är ett tips om användaren eller auktoriseringsbegäran. Azure AD B2C verifierar token och extraherar sedan anspråket.

Om du vill inkludera ett tokentips för ID i autentiseringsbegäran gör du följande:

  1. Definiera en teknisk profil för ID-tokentips i din anpassade princip.
  2. Generera eller hämta en ID-token i koden och ange sedan token till en variabel (till exempel idToken).
  3. Skapa eller använd ett befintligt Dictionary objekt för att lagra extra frågeparametrar.
  4. Lägg till parametern id_token_hint med motsvarande variabel som lagrar ID-token.
  5. Skicka det extra frågeparameterobjektet till MSAL-konfigurationsobjektets extraQueryParameters attribut.
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();

Konfigurera loggning

MSAL-biblioteket genererar loggmeddelanden som kan hjälpa dig att diagnostisera problem. Appen kan konfigurera loggning. Appen kan också ge dig anpassad kontroll över detaljnivån och om personliga och organisatoriska data loggas.

Vi rekommenderar att du skapar ett MSAL-loggningsåteranrop och tillhandahåller ett sätt för användare att skicka loggar när de har autentiseringsproblem. MSAL tillhandahåller följande nivåer av loggningsinformation:

  • Fel: Något har gått fel och ett fel har genererats. Den här nivån används för att felsöka och identifiera problem.
  • Varning! Det har inte nödvändigtvis uppstått ett fel eller fel, men informationen är avsedd för diagnostik och felsökning av problem.
  • Info: MSAL loggar händelser som är avsedda för informationsändamål och inte nödvändigtvis för felsökning.
  • Utförligt: Det här är standardnivån. MSAL loggar fullständig information om biblioteksbeteendet.

Som standard samlar MSAL-loggaren inte in några personliga eller organisatoriska data. Biblioteket ger dig möjlighet att aktivera loggning av personliga och organisatoriska data om du bestämmer dig för att göra det.

Följande kodfragment visar hur du konfigurerar MSAL-loggning:

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

Konfigurera omdirigerings-URI:n

När du väljer en omdirigerings-URI under registreringen av skrivbordsappen bör du tänka på följande viktiga överväganden:

  • Utveckling: För utveckling i skrivbordsappar kan du ange omdirigerings-URI till http://localhost, och Azure AD B2C respekterar alla portar i begäran. Om den registrerade URI:n innehåller en port använder Azure AD B2C endast den porten. Om den registrerade omdirigerings-URI:n till exempel är http://localhostkan omdirigerings-URI:n i begäran vara http://localhost:<randomport>. Om den registrerade omdirigerings-URI:n är http://localhost:8080måste omdirigerings-URI:n i begäran vara http://localhost:8080.
  • Unikt: Schemat för omdirigerings-URI:n måste vara unikt för varje program. I det här exemplet är com.onmicrosoft.contosob2c.exampleapp://oauth/redirect, com.onmicrosoft.contosob2c.exampleapp schemat. Du måste följa det här mönstret. Om två program delar samma schema får användarna ett val av program. Om användarna väljer fel misslyckas inloggningen.
  • Slutför: Omdirigerings-URI:n måste ha både ett schema och en sökväg. Sökvägen måste innehålla minst ett snedstreck efter domänen. Till exempel //oauth/ fungerar och //oauth misslyckas. Ta inte med specialtecken i URI:n. Till exempel tillåts inte understreckstecknet (_).

Nästa steg