Teilen über


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

Von Bedeutung

Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.

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

Bevor Sie beginnen, machen Sie sich mit der Konfiguration der Authentifizierung in einer Beispiel-WPF-Desktop-App vertraut, indem Sie den Azure AD B2C-Artikel verwenden .

Den Anmeldenamen im Voraus ausfüllen

Während einer Anmeldebenutzerreise richtet sich Ihre App möglicherweise an einen bestimmten Benutzer. Wenn eine App auf einen Benutzer ausgerichtet ist, kann sie in der Autorisierungsanforderung den login_hint Abfrageparameter mit dem Anmeldenamen des Benutzers angeben. Azure AD B2C füllt automatisch den Anmeldenamen auf, und 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 "Einrichten der direkten Anmeldung" beschrieben.
  2. Suchen Sie nach 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();

Vorauswahl eines Identitätsanbieters

Wenn Sie die Anmeldereise für Ihre Anwendung so konfiguriert haben, dass sie soziale Konten wie Facebook, LinkedIn oder Google enthält, können Sie den domain_hint Parameter angeben. Dieser Abfrageparameter gibt Azure AD B2C einen Hinweis auf den sozialen Identitätsanbieter, der für die Anmeldung verwendet werden soll. Wenn die Anwendung beispielsweise angibt domain_hint=facebook.com, wechselt der Anmeldefluss direkt zur Facebook-Anmeldeseite.

Gehen Sie wie folgt vor, um Benutzer an einen externen Identitätsanbieter umzuleiten:

  1. Überprüfen Sie den Domänennamen Ihres externen Identitätsanbieters. Weitere Informationen finden Sie unter Umleitung der Anmeldung an einen Anbieter für soziale Netzwerke.
  2. Erstellen oder Verwenden eines vorhandenen Dictionary Objekts zum Speichern zusätzlicher Abfrageparameter.
  3. Fügen Sie den domain_hint Parameter mit dem entsprechenden Domänennamen zum Wörterbuch hinzu (z. B facebook.com. ).
  4. Übergeben Sie das zusätzliche Abfrageparameterobjekt an die Methode des MSAL-Konfigurationsobjekts WithExtraQueryParameters .
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();

Angeben der Benutzeroberflächensprache

Die Sprachanpassung in Azure AD B2C ermöglicht Es Ihrem Benutzerfluss, eine Vielzahl von Sprachen an die Anforderungen Ihrer Kunden anzupassen. Weitere Informationen finden Sie unter Sprachanpassung.

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

  1. Konfigurieren sie die Sprachanpassung.
  2. Erstellen oder Verwenden eines vorhandenen Dictionary Objekts zum Speichern zusätzlicher Abfrageparameter.
  3. Fügen Sie den ui_locales Parameter mit dem entsprechenden Sprachcode zum Wörterbuch hinzu (z. B en-us. ).
  4. Übergeben Sie das zusätzliche Abfrageparameterobjekt an die Methode des MSAL-Konfigurationsobjekts WithExtraQueryParameters .
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();

Übergeben eines benutzerdefinierten Abfragezeichenfolgenparameters

Mit benutzerdefinierten Richtlinien können Sie einen benutzerdefinierten Abfragezeichenfolgenparameter übergeben. Ein gutes Anwendungsfallbeispiel ist, wenn Sie den Seiteninhalt dynamisch ändern möchten.

Gehen Sie wie folgt vor, um einen benutzerdefinierten Abfragezeichenfolgenparameter zu übergeben:

  1. Konfigurieren Sie das ContentDefinitionParameters-Element .
  2. Erstellen oder Verwenden eines vorhandenen Dictionary Objekts zum Speichern zusätzlicher Abfrageparameter.
  3. Fügen Sie den benutzerdefinierten Abfragezeichenfolgenparameter hinzu, wie zum Beispiel campaignId. Legen Sie den Parameterwert fest (z. B germany-promotion. ).
  4. Übergeben Sie das zusätzliche Abfrageparameterobjekt an die Methode des MSAL-Konfigurationsobjekts WithExtraQueryParameters .
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 einer vertrauenden Seite kann ein eingehendes JSON-Webtoken (JWT) als Teil der OAuth2-Autorisierungsanforderung senden. Das eingehende Token ist ein Hinweis auf den Benutzer oder die Autorisierungsanforderung. Azure AD B2C überprüft das Token und extrahiert dann den Anspruch.

Gehen Sie wie folgt vor, um einen ID-Tokenhinweis in die Authentifizierungsanforderung einzuschließen:

  1. Definieren Sie in Ihrer benutzerdefinierten Richtlinie ein ID-Tokenhinweis technisches Profil.
  2. Generieren oder erwerben Sie in Ihrem Code ein ID-Token, und legen Sie das Token dann auf eine Variable fest (z. B idToken. ).
  3. Erstellen oder Verwenden eines vorhandenen Dictionary Objekts zum Speichern zusätzlicher Abfrageparameter.
  4. Fügen Sie den id_token_hint Parameter mit der entsprechenden Variable hinzu, die das ID-Token speichert.
  5. Übergeben Sie das zusätzliche Abfrageparameterobjekt an das Attribut des MSAL-Konfigurationsobjekts extraQueryParameters .
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 die Detailebene und darüber geben, ob persönliche und organisatorische Daten protokolliert werden.

Es wird empfohlen, einen MSAL-Protokollierungsrückruf zu erstellen und Benutzern die Möglichkeit zu bieten, Protokolle zu übermitteln, wenn Authentifizierungsprobleme auftreten. MSAL stellt die folgenden Ebenen der Protokollierungsdetails bereit:

  • Fehler: Es ist ein Fehler aufgetreten, und ein Fehler wurde generiert. Diese Ebene wird zum Debuggen und Identifizieren von Problemen verwendet.
  • Warnung: Es ist nicht notwendigerweise ein Fehler oder Misserfolg aufgetreten, aber die Informationen sind für Diagnosezwecke und zur Lokalisierung von Problemen vorgesehen.
  • Info: MSAL protokolliert Ereignisse, die für Informationszwecke und nicht unbedingt für das Debuggen vorgesehen sind.
  • Ausführlich: Dies ist die Standardstufe. MSAL protokolliert die vollständigen Details des Bibliotheksverhaltens.

Standardmäßig erfasst der MSAL-Logger keine persönlichen oder organisatorischen Daten. Die Bibliothek bietet Ihnen die Möglichkeit, die Protokollierung personenbezogener und organisatorischer Daten zu aktivieren, wenn Sie dies tun möchten.

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 beim Registrieren der Desktop-App beim Auswählen eines Umleitungs-URI die folgenden wichtigen Aspekte:

  • Entwicklung: Für die Entwicklung in Desktop-Apps können Sie den Umleitungs-URI auf http://localhostfestlegen, und Azure AD B2C berücksichtigt jeden Port in der Anforderung. Wenn der registrierte URI einen Port enthält, verwendet Azure AD B2C diesen Port nur. Wenn beispielsweise der registrierte Umleitungs-URI lautet http://localhost, kann der Umleitungs-URI in der Anforderung sein http://localhost:<randomport>. Wenn der registrierte Umleitungs-URI lautet http://localhost:8080, muss der Umleitungs-URI in der Anforderung sein http://localhost:8080.
  • Eindeutig: Das Schema des Umleitungs-URI muss für jede Anwendung eindeutig sein. Im Beispiel com.onmicrosoft.contosob2c.exampleapp://oauth/redirectcom.onmicrosoft.contosob2c.exampleapp ist das Schema angegeben. Dieses Muster sollte befolgt werden. Wenn zwei Anwendungen dasselbe Schema verwenden, erhalten Die Benutzer eine Auswahl an Anwendungen. Wenn Benutzer falsch wählen, schlägt die Anmeldung fehl.
  • Abgeschlossen: Der Umleitungs-URI muss über ein Schema und einen Pfad verfügen. Der Pfad muss mindestens ein Schrägstrich hinter der Domäne enthalten. Funktioniert z. B //oauth/ . und //oauth schlägt fehl. Fügen Sie keine Sonderzeichen in den URI ein. Beispielsweise ist das Unterstrichzeichen (_) nicht zulässig.

Nächste Schritte