Konfigurieren der Authentifizierungsoptionen in einer Android-App mithilfe von Azure AD B2C
In diesem Artikel wird beschrieben, wie Sie die Azure Active Directory B2C-Authentifizierungsoberfläche (Azure AD B2C) für Ihre Android-Anwendung aktivieren, anpassen und verbessern können.
Lesen Sie die folgenden Artikel, bevor Sie beginnen:
- Konfigurieren der Authentifizierung in einem Android-Beispiel-App mithilfe von Azure AD B2C
- Aktivieren der Authentifizierung in Ihrer eigenen Android -App mithilfe von Azure AD B2C
Verwenden einer benutzerdefinierten Domäne
Durch Verwenden einer benutzerdefinierten Domäne können Sie die Authentifizierungs-URL vollständig mit Branding versehen. Aus seiner Sicht bleibt der Benutzer während des Authentifizierungsprozesses in Ihrer Domäne und wird nicht zum Azure AD B2C-Domänennamen b2clogin.com umgeleitet.
Um alle Verweise auf „b2c“ in der URL zu entfernen, können Sie auch den Namen Ihres B2C-Mandanten, contoso.onmicrosoft.com, in der URL der Authentifizierungsanforderung durch die GUID Ihrer Mandanten-ID ersetzen. Sie können z. B. https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
in https://account.contosobank.co.uk/<tenant ID GUID>/
ändern.
Um eine benutzerdefinierte Domäne und Ihre Mandanten-ID in der Authentifizierungs-URL zu verwenden, befolgen Sie die Anleitung unter Aktivieren von benutzerdefinierten Domänen. Suchen Sie Ihr MSAL-Konfigurationsobjekt (Microsoft Authentication Library), und aktualisieren Sie dann authorities mit Ihrem benutzerdefinierten Domänennamen und der Mandanten-ID.
Der folgende Kotlin-Code zeigt das MSAL-Konfigurationsobjekt vor der Änderung:
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.fromAuthority("https://contoso.b2clogin.com/fabrikamb2c.contoso.com/B2C_1_susi")
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
Der folgende Kotlin-Code zeigt das MSAL-Konfigurationsobjekt nach der Änderung:
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.fromAuthority("https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi")
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
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:
- Wenn Sie eine benutzerdefinierte Richtlinie verwenden, fügen Sie den erforderlichen Eingabeanspruch hinzu, wie unter dem Verfahren Einrichten der direkten Anmeldung beschrieben.
- Wechseln Sie zu Ihrem MSAL-Konfigurationsobjekt, und fügen Sie die
withLoginHint()
-Methode mit dem Anmeldehinweis hinzu.
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withLoginHint("bob@contoso.com")
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
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:
- Überprüfen Sie den Domänennamen Ihres externen Identitätsanbieters. Weitere Informationen finden Sie unter Umleiten einer Anmeldung zu einem Anbieter sozialer Netzwerke.
- Verwenden Sie ein vorhandenes Listenobjekt, um zusätzliche Abfrageparameter zu speichern, oder erstellen Sie ein neues Listenobjekt.
- Fügen Sie der Liste den
domain_hint
-Parameter mit dem entsprechenden Domänennamen hinzu (zum Beispielfacebook.com
). - Übergeben Sie die zusätzliche Abfrageparameterliste an die
withAuthorizationQueryStringParameters
-Methode des MSAL-Konfigurationsobjekts.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("domain_hint", "facebook.com"))
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
Ä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:
- Konfigurieren Sie die Sprachanpassung.
- Verwenden Sie ein vorhandenes Listenobjekt, um zusätzliche Abfrageparameter zu speichern, oder erstellen Sie ein neues Listenobjekt.
- Fügen Sie der Liste den
ui_locales
-Parameter mit dem entsprechenden Sprachcode hinzu (zum Beispielen-us
). - Übergeben Sie die zusätzliche Abfrageparameterliste an die
withAuthorizationQueryStringParameters
-Methode des MSAL-Konfigurationsobjekts.
val extraQueryParameters: MutableList<Map.Entry<String, String>> = ArrayList()
val mapEntry = object : Map.Entry<String, String> {
override val key: String = "ui_locales"
override val value: String = "en-us"
}
extraQueryParameters.add(mapEntry )
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
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:
- Konfigurieren Sie das ContentDefinitionParameters-Element.
- Verwenden Sie ein vorhandenes Listenobjekt, um zusätzliche Abfrageparameter zu speichern, oder erstellen Sie ein neues Listenobjekt.
- Fügen Sie den benutzerdefinierten Abfragezeichenfolgenparameter hinzu (z. B.
campaignId
). Legen Sie den Parameterwert fest (zum Beispielgermany-promotion
). - Übergeben Sie die zusätzliche Abfrageparameterliste an die
withAuthorizationQueryStringParameters
-Methode des MSAL-Konfigurationsobjekts.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("campaignId", "germany-promotion"))
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
Ü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:
- Definieren Sie ein technisches ID-Token-Hinweisprofil in Ihrer benutzerdefinierten Richtlinie.
- 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
). - Verwenden Sie ein vorhandenes Listenobjekt, um zusätzliche Abfrageparameter zu speichern, oder erstellen Sie ein neues Listenobjekt.
- Fügen Sie den
id_token_hint
-Parameter mit der entsprechenden Variablen hinzu, in der das ID-Token gespeichert wird. - Übergeben Sie die zusätzliche Abfrageparameterliste an die
withAuthorizationQueryStringParameters
-Methode des MSAL-Konfigurationsobjekts.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("id_token_hint", idToken))
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
Benutzeroberfläche für eingebettete Webansicht
Webbrowser sind eine Voraussetzung für die interaktive Authentifizierung. Die MSAL-Bibliothek verwendet standardmäßig die Systemwebansicht. Während der Anmeldung öffnet die MSAL-Bibliothek die Android-Systemwebansicht mit der Azure AD-B2C-Benutzeroberfläche.
Weitere Informationen finden Sie im Abschnitt Aktivieren des appübergreifenden einmaligen Anmeldens unter Android mit MSAL.
Je nach Ihren Anforderungen können Sie die eingebettete Webansicht verwenden. Zwischen der eingebetteten Webansicht und der Systemwebansicht in MSAL gibt es visuelle Unterschiede und Unterschiede bei SSO-Vorgängen.
Wichtig
Es wird empfohlen, die Plattformstandardeinstellung zu verwenden, die normalerweise der Systembrowser ist. Der Systembrowser kann die Benutzer besser speichern, die sich zuvor angemeldet haben. Einige Identitätsanbieter*innen (z. B. Google) unterstützen keine eingebettete Ansicht.
Um dies zu ändern, öffnen Sie die Datei app/src/main/res/raw/auth_config_b2c.json. Fügen Sie im Attribut authorization_user_agent
den Wert WEBVIEW
hinzu. Im folgenden Beispiel wird veranschaulicht, wie der Webansichtstyp in eine eingebettete Ansicht geändert wird:
{
"authorization_user_agent": "WEBVIEW"
}
Nächste Schritte
- Weitere Informationen zur Android-Konfiguration finden Sie unter MSAL für Android-Konfigurationsoptionen.