Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Möglichkeiten beschrieben, wie Sie die Azure Active Directory B2C-Authentifizierung (Azure AD B2C) für Ihre iOS-Swift-Anwendung aktivieren, anpassen und verbessern können.
Bevor Sie beginnen, machen Sie sich mit den folgenden Artikeln vertraut:
- Konfigurieren der Authentifizierung in einer iOS-Swift-Beispiel-App mithilfe von Azure AD B2C
- Aktivieren der Authentifizierung in Ihrer eigenen iOS-Swift-App mithilfe von Azure AD B2C
Verwenden einer benutzerdefinierten Domäne
Mithilfe einer benutzerdefinierten Domäne können Sie die Authentifizierungs-URL vollständig kennzeichnen. Aus Benutzerperspektive verbleiben Benutzer während des Authentifizierungsprozesses auf Ihrer Domäne, anstatt an den Azure AD B2C b2clogin.com Domänennamen umgeleitet zu werden.
Um alle Verweise auf "b2c" in der URL zu entfernen, können Sie auch Ihren B2C-Mandantennamen, contoso.onmicrosoft.com, in der Authentifizierungsanforderungs-URL durch Ihre Mandanten-ID-GUID ersetzen. Sie können zum Beispiel https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ zu https://account.contosobank.co.uk/<tenant ID GUID>/ ändern.
Gehen Sie wie folgt vor, um eine benutzerdefinierte Domäne und Ihre Mandanten-ID in der Authentifizierungs-URL zu verwenden:
- Folgen Sie den Anweisungen in "Benutzerdefinierte Domänen aktivieren".
- Aktualisieren Sie den
kAuthorityHostNameKlassenmember mit Ihrer benutzerdefinierten Domäne. - Aktualisieren Sie den
kTenantNameKlassenmember mit Ihrer Mandanten-ID.
Der folgende Swift-Code zeigt die App-Einstellungen vor der Änderung:
let kTenantName = "contoso.onmicrosoft.com"
let kAuthorityHostName = "contoso.b2clogin.com"
Der folgende Swift-Code zeigt die App-Einstellungen nach der Änderung:
let kTenantName = "00000000-0000-0000-0000-000000000000"
let kAuthorityHostName = "login.contoso.com"
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:
- Wenn Sie eine benutzerdefinierte Richtlinie verwenden, fügen Sie den erforderlichen Eingabeanspruch hinzu, wie unter "Einrichten der direkten Anmeldung" beschrieben.
- Suchen Sie nach Ihrem MSAL-Konfigurationsobjekt (Microsoft Authentication Library), und fügen Sie die
withLoginHint()Methode mit dem Anmeldehinweis hinzu.
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParameters!)
parameters.promptType = .selectAccount
parameters.authority = authority
parameters.loginHint = "bob@contoso.com"
// More settings here
applicationContext.acquireToken(with: parameters) { (result, error) in
...
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:
- Ü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.
- Erstellen oder Verwenden eines vorhandenen Listenobjekts zum Speichern zusätzlicher Abfrageparameter.
- Fügen Sie den
domain_hintParameter mit dem entsprechenden Domänennamen zur Liste hinzu (z. Bfacebook.com. ). - Übergeben Sie die zusätzliche Abfrageparameterliste an das Attribut des MSAL-Konfigurationsobjekts
extraQueryParameters.
let extraQueryParameters: [String: String] = ["domain_hint": "facebook.com"]
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParameters!)
parameters.promptType = .selectAccount
parameters.authority = authority
parameters.extraQueryParameters = extraQueryParameters
// More settings here
applicationContext.acquireToken(with: parameters) { (result, error) in
...
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:
- Konfigurieren sie die Sprachanpassung.
- Erstellen oder Verwenden eines vorhandenen Listenobjekts zum Speichern zusätzlicher Abfrageparameter.
- Fügen Sie den
ui_localesParameter mit dem entsprechenden Sprachcode zur Liste hinzu (z. Ben-us. ). - Übergeben Sie die zusätzliche Abfrageparameterliste an das Attribut des MSAL-Konfigurationsobjekts
extraQueryParameters.
let extraQueryParameters: [String: String] = ["ui_locales": "en-us"]
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParameters!)
parameters.promptType = .selectAccount
parameters.authority = authority
parameters.extraQueryParameters = extraQueryParameters
// More settings here
applicationContext.acquireToken(with: parameters) { (result, error) in
...
Ü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:
- Konfigurieren Sie das ContentDefinitionParameters-Element .
- Erstellen oder Verwenden eines vorhandenen Listenobjekts zum Speichern zusätzlicher Abfrageparameter.
- Fügen Sie den benutzerdefinierten Abfragezeichenfolgenparameter hinzu, wie zum Beispiel
campaignId. Legen Sie den Parameterwert fest (z. Bgermany-promotion. ). - Übergeben Sie die zusätzliche Abfrageparameterliste an das Attribut des MSAL-Konfigurationsobjekts
extraQueryParameters.
let extraQueryParameters: [String: String] = ["campaignId": "germany-promotion"]
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParameters!)
parameters.promptType = .selectAccount
parameters.authority = authority
parameters.extraQueryParameters = extraQueryParameters
// More settings here
applicationContext.acquireToken(with: parameters) { (result, error) in
...
Ü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:
- Definieren Sie in Ihrer benutzerdefinierten Richtlinie ein ID-Tokenhinweis technisches Profil.
- Generieren oder erwerben Sie in Ihrem Code ein ID-Token, und legen Sie das Token dann auf eine Variable fest (z. B
idToken. ). - Erstellen oder Verwenden eines vorhandenen Listenobjekts zum Speichern zusätzlicher Abfrageparameter.
- Fügen Sie den
id_token_hintParameter mit der entsprechenden Variable hinzu, die das ID-Token speichert. - Übergeben Sie die zusätzliche Abfrageparameterliste an das Attribut des MSAL-Konfigurationsobjekts
extraQueryParameters.
let extraQueryParameters: [String: String] = ["id_token_hint": idToken]
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParameters!)
parameters.promptType = .selectAccount
parameters.authority = authority
parameters.extraQueryParameters = extraQueryParameters
// More settings here
applicationContext.acquireToken(with: parameters) { (result, error) in
...
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 Ausfall aufgetreten, aber die Informationen sind für Diagnosezwecke und zur Identifizierung 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.
Die MSAL-Protokollierung sollte so früh wie möglich in der Startsequenz der App festgelegt werden, bevor MSAL-Anforderungen gestellt werden. Konfigurieren Sie die MSAL-Protokollierung in der AppDelegate.swift-Methodeapplication .
Der folgende Codeausschnitt veranschaulicht das Konfigurieren der MSAL-Protokollierung:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
MSALGlobalConfig.loggerConfig.logLevel = .verbose
MSALGlobalConfig.loggerConfig.setLogCallback { (logLevel, message, containsPII) in
// If PiiLoggingEnabled is set YES, this block will potentially contain sensitive information (Personally Identifiable Information), but not all messages will contain it.
// containsPII == YES indicates if a particular message contains PII.
// You might want to capture PII only in debug builds, or only if you take necessary actions to handle PII properly according to legal requirements of the region
if let displayableMessage = message {
if (!containsPII) {
#if DEBUG
// NB! This sample uses print just for testing purposes
// You should only ever log to NSLog in debug mode to prevent leaking potentially sensitive information
print(displayableMessage)
#endif
}
}
}
return true
}
Eingebettete Webansicht
Webbrowser sind für die interaktive Authentifizierung erforderlich. Standardmäßig verwendet die MSAL-Bibliothek die Systemwebansicht. Während der Anmeldung wird in der MSAL-Bibliothek die iOS-Systemwebansicht mit der Azure AD B2C-Benutzeroberfläche angezeigt.
Weitere Informationen finden Sie im Artikel Anpassen von Browsern und WebViews für iOS/macOS .
Je nach Ihren Anforderungen können Sie die eingebettete Webansicht verwenden. Es gibt Unterschiede beim visuellen und einmaligen Anmelden zwischen der eingebetteten Webansicht und der Systemwebansicht in MSAL.
Von Bedeutung
Es wird empfohlen, den Plattformstandard zu verwenden, der normalerweise der Systembrowser ist. Der Systembrowser ist besser, sich an die Benutzer zu erinnern, die sich zuvor angemeldet haben. Einige Identitätsanbieter, z. B. Google, unterstützen keine eingebettete Ansichtsoberfläche.
Um dieses Verhalten zu ändern, ändern Sie das webviewType Attribut von MSALWebviewParameters in wkWebView. Im folgenden Beispiel wird veranschaulicht, wie Sie den Webansichtstyp in eingebettete Ansicht ändern:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
// Use embedded view experience
self.webViewParameters?.webviewType = .wkWebView
}
Nächste Schritte
- Weitere Informationen finden Sie unter Swift-Konfigurationsoptionen von MSAL für iOS.