Freigeben über


Aktivieren von Authentifizierungsoptionen in einer WPF-Desktop-App mit Azure AD B2C

In diesem Artikel werden Möglichkeiten beschrieben, wie Sie die Azure Active Directory B2C-Authentifizierungsoberfläche (Azure AD B2C) für Ihre WPF-Desktopanwendung (Windows Presentation Foundation) anpassen und verbessern können.

Machen Sie sich zunächst mit dem folgenden Artikel vertraut: Konfigurieren der Authentifizierung in einer Beispiel-WPF-Desktop-App mit Azure AD B2C.

Auffüllen des Anmeldenamens

Während einer User Journey zur Anmeldung zielt Ihre App ggf. auf einen bestimmten Benutzer ab. Wenn eine App auf einen Benutzer abzielt, kann sie in der Autorisierungsanforderung den Abfrageparameter login_hint mit dem Anmeldenamen des Benutzers angeben. Azure AD B2C füllt den Anmeldenamen automatisch auf. Der Benutzer muss nur das Kennwort angeben.

Gehen Sie wie folgt vor, um den Anmeldenamen vorab aufzufüllen:

  1. Wenn Sie eine benutzerdefinierte Richtlinie verwenden, fügen Sie den erforderlichen Eingabeanspruch hinzu, wie unter dem Verfahren Einrichten der direkten Anmeldung beschrieben.
  2. Wechseln Sie zu Ihrem MSAL-Konfigurationsobjekt (Microsoft Authentication Library), und fügen Sie die withLoginHint()-Methode mit dem Anmeldehinweis hinzu.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithLoginHint("bob@contoso.com")
    .ExecuteAsync();

Vorabauswahl eines Identitätsanbieters

Wenn Sie die User Journey für die Anmeldung bei Ihrer Anwendung so konfiguriert haben, dass Konten für soziale Netzwerke inbegriffen sind, wie z.B. Facebook, LinkedIn oder Google, können Sie den Parameter domain_hint angeben. Dieser Abfrageparameter enthält einen Hinweis für Azure AD B2C zu dem sozialen Netzwerk als Identitätsanbieter, das für die Anmeldung verwendet werden sollte. Wenn in der Anwendung beispielsweise domain_hint=facebook.com angegeben ist, erfolgt der Anmeldefluss direkt auf der Anmeldeseite von Facebook.

Gehen Sie wie folgt vor, um Benutzer zu einem externen Identitätsanbieter umzuleiten:

  1. Überprüfen Sie den Domänennamen Ihres externen Identitätsanbieters. Weitere Informationen finden Sie unter Umleiten einer Anmeldung zu einem Anbieter sozialer Netzwerke.
  2. Erstellen oder verwenden Sie ein vorhandenes Dictionary-Objekt, um zusätzliche Abfrageparameter zu speichern.
  3. Fügen Sie dem Wörterbuch den Parameter domain_hint mit dem entsprechenden Domänennamen hinzu (z. B. facebook.com).
  4. Übergeben Sie das zusätzliche Abfrageparameterobjekt an die WithExtraQueryParameters-Methode des MSAL-Konfigurationsobjekts.
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();

Ändern Sie die Sprache für die Benutzeroberfläche

Die Sprachanpassung in Azure AD B2C ermöglicht Ihrem Benutzerfluss, eine Vielzahl von Sprachen zu berücksichtigen, um die Anforderungen Ihrer Kunden zu erfüllen. Weitere Informationen hierzu finden Sie unter Sprachanpassung.

Gehen Sie wie folgt vor, um die bevorzugte Sprache festzulegen:

  1. Konfigurieren Sie die Sprachanpassung.
  2. Erstellen oder verwenden Sie ein vorhandenes Dictionary-Objekt, um zusätzliche Abfrageparameter zu speichern.
  3. Fügen Sie dem Wörterbuch den Parameter ui_locales mit dem entsprechenden Sprachcode hinzu (z. B. en-us).
  4. Übergeben Sie das zusätzliche Abfrageparameterobjekt an die WithExtraQueryParameters-Methode des MSAL-Konfigurationsobjekts.
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();

Das Übergeben eines benutzerdefinierten Abfragezeichenfolgenparameters

Mit benutzerdefinierten Richtlinien können Sie einen benutzerdefinierten Abfragezeichenfolgenparameter übergeben. Ein gutes Anwendungsfallbeispiel ist die dynamische Änderung der Seitenanzahl.

Um einen benutzerdefinierten Abfragezeichenfolgenparameter zu übergeben, gehen Sie folgendermaßen vor:

  1. Konfigurieren Sie das ContentDefinitionParameters-Element.
  2. Erstellen oder verwenden Sie ein vorhandenes Dictionary-Objekt, um zusätzliche Abfrageparameter zu speichern.
  3. Fügen Sie den benutzerdefinierten Abfragezeichenfolgen-Parameter hinzu, z. B. campaignId. Legen Sie den Parameterwert fest (z. B. germany-promotion).
  4. Übergeben Sie das zusätzliche Abfrageparameterobjekt an die WithExtraQueryParameters-Methode des MSAL-Konfigurationsobjekts.
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();

Übergeben eines ID-Tokenhinweises

Eine Anwendung der vertrauenden Seite kann ein eingehendes JWT (JSON Web Token) als Teil der OAuth2-Autorisierungsanforderung senden. Das eingehende Token ist ein Hinweis zum Benutzer oder zur Autorisierungsanforderung. Azure AD B2C überprüft das Token und extrahiert die Ansprüche.

Führen Sie die folgenden Schritte aus, um einen ID-Tokenhinweis in die Authentifizierungsanforderung einzufügen:

  1. Definieren Sie ein technisches ID-Token-Hinweisprofil in Ihrer benutzerdefinierten Richtlinie.
  2. Generieren Sie in Ihrem Code ein ID-Token, oder rufen Sie ein ID-Token ab. Legen Sie dieses dann auf eine Variable fest (z. B. idToken).
  3. Erstellen oder verwenden Sie ein vorhandenes Dictionary-Objekt, um zusätzliche Abfrageparameter zu speichern.
  4. Fügen Sie den Parameter id_token_hint mit der entsprechenden Variablen hinzu, in der das ID-Token gespeichert wird.
  5. Übergeben Sie das zusätzliche Abfrageparameterobjekt an das Attribut extraQueryParameters des MSAL-Konfigurationsobjekts.
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();

Konfigurieren der Protokollierung

Die MSAL-Bibliothek generiert Protokollmeldungen, die bei der Diagnose von Problemen helfen können. Die App kann die Protokollierung konfigurieren. Die App kann Ihnen auch eine benutzerdefinierte Kontrolle über den Detaillierungsgrad geben und darüber, ob persönliche und Organisationsdaten protokolliert werden.

Sie sollten einen MSAL-Protokollierungsrückruf erstellen und Benutzern eine Möglichkeit bieten, Protokolle zu übermitteln, wenn Authentifizierungsprobleme auftreten. MSAL bietet mehrere Protokollierungsdetailgrade:

  • Fehler: Gibt an, dass ein Problem aufgetreten ist und ein Fehler generiert wurde. Dieser Grad wird zum Debuggen und Identifizieren von Problemen verwendet.
  • Warnung: Es muss nicht unbedingt zu einem Fehler oder Ausfall gekommen sein. Diese Informationen sind zum Diagnostizieren und Ermitteln von Problemen vorgesehen.
  • Info: MSAL protokolliert Ereignisse, die zu Informationszwecken und nicht notwendigerweise zum Debuggen bestimmt sind.
  • Ausführlich: Dies ist die Standardstufe. Msal protokolliert die vollständigen Details des Bibliotheksverhaltens.

Die MSAL-Protokollierung erfasst standardmäßig keine personenbezogenen oder Organisationsdaten. Die Bibliothek bietet Ihnen jedoch die Option, die Protokollierung von personenbezogenen Daten und Organisationsdaten zu aktivieren.

Der folgende Codeausschnitt veranschaulicht das Konfigurieren der MSAL-Protokollierung:

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

Konfigurieren des Umleitungs-URI

Beachten Sie während des Prozesses der Registrierung der Desktop-App bei der Auswahl eines Umleitungs-URI die folgenden wichtigen Aspekte:

  • Entwicklung: Zur Verwendung zur Entwicklung in Desktop-Apps können Sie den Umleitungs-URI auf http://localhost festlegen. Dann berücksichtigt Azure AD B2C alle Ports in der Anforderung. Wenn der registrierte URI einen Port enthält, verwendet Azure AD B2C nur diesen Port. Wenn der registrierte Umleitungs-URI beispielsweise http://localhost lautet, kann in der Anforderung der Umleitungs-URI http://localhost:<randomport> verwendet werden. Lautet der registrierte Umleitungs-URI http://localhost:8080 muss der Umleitungs-URI in der Anforderung http://localhost:8080 lauten.
  • Eindeutig: Das Schema für den Umleitungs-URI muss für jede Anwendung eindeutig sein. Im Beispiel com.onmicrosoft.contosob2c.exampleapp://oauth/redirect ist com.onmicrosoft.contosob2c.exampleapp das Schema. Dieses Muster sollte befolgt werden. Wenn zwei Anwendungen das gleiche Schema verwenden, erhalten Benutzer eine Auswahl von Anwendungen. Wenn Benutzer falsch auswählen, tritt bei der Anmeldung ein Fehler auf.
  • Vollständigkeit: Der Umleitungs-URI muss ein Schema und einen Pfad aufweisen. Der Pfad muss mindestens einen Schrägstrich nach der Domäne enthalten. Zum Beispiel funktioniert //oauth/, bei //oauth tritt ein Fehler auf. Verwenden Sie keine Sonderzeichen im URI. Beispielsweise ist der Unterstrich (_) nicht zulässig.

Nächste Schritte