Aktivera autentiseringsalternativ i en iOS Swift-app med hjälp av Azure AD B2C
I den här artikeln beskrivs hur du kan aktivera, anpassa och förbättra autentiseringsupplevelsen för Azure Active Directory B2C (Azure AD B2C) för ditt iOS Swift-program.
Innan du börjar bör du bekanta dig med följande artiklar:
- Konfigurera autentisering i en iOS Swift-exempelapp med hjälp av Azure AD B2C
- Aktivera autentisering i din egen iOS Swift-app med hjälp av Azure AD B2C
Använda en anpassad domän
Genom att använda en anpassad domän kan du helt märka autentiserings-URL:en. Ur ett användarperspektiv finns användarna kvar på din domän under autentiseringsprocessen, i stället för att omdirigeras till Azure AD B2C b2clogin.com domännamn.
Om du vill ta bort alla referenser till "b2c" i URL:en kan du också ersätta ditt B2C-klientnamn, contoso.onmicrosoft.com, i URL:en för autentiseringsbegäran med ditt klientorganisations-ID GUID. Du kan till exempel ändra https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
till https://account.contosobank.co.uk/<tenant ID GUID>/
.
Om du vill använda en anpassad domän och ditt klientorganisations-ID i autentiserings-URL:en gör du följande:
- Följ anvisningarna i Aktivera anpassade domäner.
-
kAuthorityHostName
Uppdatera klassmedlemmen med din anpassade domän. -
kTenantName
Uppdatera klassmedlemmen med ditt klientorganisations-ID.
Följande Swift-kod visar appinställningarna före ändringen:
let kTenantName = "contoso.onmicrosoft.com"
let kAuthorityHostName = "contoso.b2clogin.com"
Följande Swift-kod visar appinställningarna efter ändringen:
let kTenantName = "00000000-0000-0000-0000-000000000000"
let kAuthorityHostName = "login.contoso.com"
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:
- Om du använder en anpassad princip lägger du till det inkommande anspråk som krävs enligt beskrivningen i Konfigurera direkt inloggning.
- Leta efter konfigurationsobjektet för Microsoft Authentication Library (MSAL) och lägg sedan till
withLoginHint()
metoden med inloggningstipset.
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
...
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.com
direkt till Facebook-inloggningssidan.
Om du vill omdirigera användare till en extern identitetsprovider gör du följande:
- Kontrollera domännamnet för din externa identitetsprovider. Mer information finns i Omdirigera inloggning till en social provider.
- Skapa eller använd ett befintligt listobjekt för att lagra extra frågeparametrar.
- Lägg till parametern
domain_hint
med motsvarande domännamn i listan (till exempelfacebook.com
). - Skicka listan med extra frågeparametrar till MSAL-konfigurationsobjektets
extraQueryParameters
attribut.
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
...
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:
- Konfigurera språkanpassning.
- Create or use an existing list object to store extra query parameters.
- Lägg till parametern
ui_locales
med motsvarande språkkod i listan (till exempelen-us
). - Pass the extra query parameters list into the MSAL configuration object's
extraQueryParameters
attribute.
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
...
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:
- Konfigurera elementet ContentDefinitionParameters .
- Create or use an existing list object to store extra query parameters.
- Lägg till den anpassade frågesträngsparametern, till exempel
campaignId
. Ange parametervärdet (till exempelgermany-promotion
). - Pass the extra query parameters list into the MSAL configuration object's
extraQueryParameters
attribute.
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
...
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:
- Definiera en teknisk profil för ID-tokentips i din anpassade princip.
- Generera eller hämta en ID-token i koden och ange sedan token till en variabel (till exempel
idToken
). - Create or use an existing list object to store extra query parameters.
- Lägg till parametern
id_token_hint
med motsvarande variabel som lagrar ID-token. - Pass the extra query parameters list into the MSAL configuration object's
extraQueryParameters
attribute.
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
...
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.
MSAL-loggaren bör anges så tidigt som möjligt i appstartsekvensen innan några MSAL-begäranden görs. Konfigurera MSAL-loggning i metoden AppDelegate.swiftapplication
.
Följande kodfragment visar hur du konfigurerar MSAL-loggning:
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
}
Inbäddad webbvyupplevelse
Webbläsare krävs för interaktiv autentisering. Som standard använder MSAL-biblioteket systemwebbvyn. Under inloggningen öppnar MSAL-biblioteket iOS-systemets webbvy med användargränssnittet Azure AD B2C.
Mer information finns i artikeln Anpassa webbläsare och WebViews för iOS/macOS .
Beroende på dina behov kan du använda den inbäddade webbvyn. Det finns skillnader i beteende för visuella objekt och enkel inloggning mellan den inbäddade webbvyn och systemets webbvy i MSAL.
Viktigt
Vi rekommenderar att du använder plattformens standardvärde, som vanligtvis är systemwebbläsaren. Systemwebbläsaren är bättre på att komma ihåg de användare som har loggat in tidigare. Vissa identitetsprovidrar, till exempel Google, stöder inte en inbäddad vyupplevelse.
Om du vill ändra det här beteendet ändrar du webviewType
attributet MSALWebviewParameters
för till wkWebView
. I följande exempel visas hur du ändrar webbvytypen till inbäddad vy:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
// Use embedded view experience
self.webViewParameters?.webviewType = .wkWebView
}
Nästa steg
- Mer information finns i Konfigurationsalternativ för MSAL för iOS Swift.