Aktivera autentiseringsalternativ i en iOS Swift-app med hjälp av Azure AD B2C

Viktigt!

Från och med den 1 maj 2025 är Azure AD B2C inte längre tillgängligt att köpa för nya kunder. Läs mer i våra vanliga frågor och svar.

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:

Använda en anpassad domän

Genom att använda en anpassad domän kan du helt märka autentiserings-URL:en. Från 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 klient-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 klient-ID i autentiserings-URL:en gör du följande:

  1. Följ riktlinjerna i Aktivera anpassade domäner.
  2. kAuthorityHostName Uppdatera klassmedlemmen med din anpassade domän.
  3. kTenantName Uppdatera klassmedlemmen med ditt klient-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 inloggningsresa kan din app rikta in sig på en specifik användare. När en app riktar sig mot 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:

  1. Använder du en anpassad princip, lägg till det nödvändiga indata som beskrivs i Konfigurera direkt inloggning.
  2. 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
...

Avmarkera en identitetsprovider i förväg

Om du har konfigurerat inloggningsresan för ditt program så att det innehåller sociala konton, till exempel Facebook, LinkedIn eller Google, kan du ange parametern domain_hint . Den här frågeparametern ger ett tips till 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.comdirekt till Facebooks inloggningssida.

Om du vill omdirigera användare till en extern identitetsprovider gör du följande:

  1. Kontrollera domännamnet för din externa identitetsprovider. Mer information finns i Omdirigera inloggning till en social provider.
  2. Skapa eller använd ett befintligt listobjekt för att lagra extra frågeparametrar.
  3. Lägg till parametern domain_hint med motsvarande domännamn i listan (till exempel facebook.com).
  4. 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:

  1. Konfigurera språkanpassning.
  2. Skapa eller använd ett befintligt listobjekt för att lagra extra frågeparametrar.
  3. Lägg till parametern ui_locales med motsvarande språkkod i listan (till exempel en-us).
  4. Skicka listan med extra frågeparametrar till MSAL-konfigurationsobjektets extraQueryParameters attribut.
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 exempel på användningsfall är när du vill ändra sidinnehållet dynamiskt.

Gör följande för att skicka en anpassad frågesträngsparameter:

  1. Konfigurera elementet ContentDefinitionParameters .
  2. Skapa eller använd ett befintligt listobjekt för att lagra extra frågeparametrar.
  3. Lägg till den anpassade frågesträngsparametern, till exempel campaignId. Ange parametervärdet (till exempel germany-promotion).
  4. Skicka listan med extra frågeparametrar till MSAL-konfigurationsobjektets extraQueryParameters attribut.
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 partprogram 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.

Gör följande om du vill inkludera ett ID-tokentips i autentiseringsbegäran:

  1. I din anpassade policy definierar du en teknisk profil för ID-tokentips.
  2. I koden genererar eller hämtar du en ID-token och anger sedan token till en variabel (till exempel idToken).
  3. Skapa eller använd ett befintligt listobjekt för att lagra extra frågeparametrar.
  4. Lägg till parametern id_token_hint med motsvarande variabel som lagrar ID-token.
  5. Skicka listan med extra frågeparametrar till MSAL-konfigurationsobjektets extraQueryParameters attribut.
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 loggfunktioner. Appen kan också ge dig anpassad kontroll över detaljnivån och om personliga data och organisationsdata 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 för att hitta 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: Detta är standardnivån. MSAL loggar den fullständiga informationen om biblioteksbeteendet.

Som standard samlar MSAL-loggaren inte in några personliga data eller organisationsdata. Biblioteket ger dig möjlighet att aktivera loggning av personliga data och organisationsdata 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 visar MSAL-biblioteket iOS-systemets webbvy med Azure AD B2C-användargränssnittet.

Mer information finns i artikeln Anpassa webbläsare och WebViews för iOS/macOS .

Beroende på dina krav kan du använda den inbäddade webbvyn. Det finns skillnader mellan det visuella och det enkla inloggningsbeteendet mellan den inbäddade webbvyn och systemwebbvyn i MSAL.

Skärmbild som visar skillnaden mellan systemets webbvyupplevelse och den inbäddade webbvyupplevelsen.

Viktigt!

Vi rekommenderar att du använder plattformsstandarden, 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.

För att ändra detta beteende, ändra attributet webviewType till MSALWebviewParameters. 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