Sdílet prostřednictvím


Povolení možností ověřování v aplikaci Pro iOS Swift pomocí Azure AD B2C

Důležité

Od 1. května 2025 už nebude Azure AD B2C k dispozici k nákupu pro nové zákazníky. Další informace najdete v našich nejčastějších dotazech.

Tento článek popisuje způsoby, jak povolit, přizpůsobit a vylepšit prostředí ověřování Azure Active Directory B2C (Azure AD B2C) pro vaši aplikaci iOS Swift.

Než začnete, seznamte se s následujícími články:

Použití vlastní domény

Pomocí vlastní domény můžete plně označit adresu URL ověřování. Z pohledu uživatele zůstanou uživatelé ve vaší doméně během procesu ověřování místo přesměrování na název domény Azure AD B2C b2clogin.com.

Pokud chcete odebrat všechny odkazy na "b2c" v adrese URL, můžete také nahradit název tenanta B2C, contoso.onmicrosoft.com, v adrese URL žádosti o ověření identifikátorem GUID vašeho tenanta. Můžete například změnit https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ na https://account.contosobank.co.uk/<tenant ID GUID>/.

Pokud chcete použít vlastní doménu a ID tenanta v adrese URL ověřování, postupujte takto:

  1. Postupujte podle pokynů v části Povolení vlastních domén.
  2. Aktualizujte člena třídy kAuthorityHostName pomocí vaší vlastní domény.
  3. kTenantName Aktualizujte člena třídy pomocí ID tenanta.

Následující kód Swiftu před změnou zobrazuje nastavení aplikace:

let kTenantName = "contoso.onmicrosoft.com" 
let kAuthorityHostName = "contoso.b2clogin.com" 

Následující kód Swiftu zobrazuje nastavení aplikace po změně:

let kTenantName = "00000000-0000-0000-0000-000000000000" 
let kAuthorityHostName = "login.contoso.com" 

Předem vyplníte přihlašovací jméno.

Během cesty uživatele přihlašování může vaše aplikace cílit na konkrétního uživatele. Když aplikace cílí na uživatele, může v žádosti o login_hint autorizaci zadat parametr dotazu s přihlašovacím jménem uživatele. Azure AD B2C automaticky vyplní přihlašovací jméno a uživatel musí zadat jenom heslo.

Chcete-li předvyplnit přihlašovací jméno, postupujte takto:

  1. Pokud používáte vlastní zásadu, přidejte požadovanou vstupní deklaraci, jak je popsáno v Nastavte přímé přihlášení.
  2. Vyhledejte objekt konfigurace knihovny MSAL (Microsoft Authentication Library) a pak přidejte metodu withLoginHint() s nápovědou pro přihlášení.
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
...

Předem vyberte zprostředkovatele identity

Pokud jste nakonfigurovali cestu přihlášení pro aplikaci tak, aby zahrnovala sociální účty, jako je Facebook, LinkedIn nebo Google, můžete zadat domain_hint parametr. Tento parametr dotazu poskytuje nápovědu pro Azure AD B2C o zprostředkovateli sociálních identit, který by se měl použít pro přihlášení. Pokud například aplikace určí domain_hint=facebook.com, tok přihlášení přejde přímo na přihlašovací stránku Facebooku.

Pokud chcete uživatele přesměrovat na externího zprostředkovatele identity, postupujte takto:

  1. Zkontrolujte název domény vašeho externího zprostředkovatele identity. Další informace najdete v tématu Přesměrování přihlášení k poskytovateli sociálních sítí.
  2. Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
  3. domain_hint Přidejte parametr s odpovídajícím názvem domény do seznamu (například facebook.com).
  4. Předejte extra seznam parametrů dotazu do atributu objektu extraQueryParameters konfigurace MSAL.
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
...

Určení jazyka uživatelského rozhraní

Přizpůsobení jazyka v Azure AD B2C umožňuje toku uživatelů přizpůsobit různé jazyky podle potřeb vašich zákazníků. Další informace naleznete v tématu Přizpůsobení jazyka.

Pokud chcete nastavit upřednostňovaný jazyk, postupujte takto:

  1. Nakonfigurujte přizpůsobení jazyka.
  2. Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
  3. ui_locales Přidejte parametr s odpovídajícím kódem jazyka do seznamu (například en-us).
  4. Předejte extra seznam parametrů dotazu do atributu objektu extraQueryParameters konfigurace MSAL.
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
...

Předání vlastního parametru řetězce dotazu

Pomocí vlastních zásad můžete předat vlastní parametr řetězce dotazu. Dobrým příkladem použití je, když chcete dynamicky změnit obsah stránky.

Pokud chcete předat vlastní parametr řetězce dotazu, postupujte takto:

  1. Nakonfigurujte element ContentDefinitionParameters .
  2. Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
  3. Přidejte vlastní parametr řetězce dotazu, například campaignId. Nastavte hodnotu parametru (například germany-promotion).
  4. Předejte extra seznam parametrů dotazu do atributu objektu extraQueryParameters konfigurace MSAL.
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
...

Nápověda k předání tokenu ID

Aplikace předávající strany může jako součást žádosti o autorizaci OAuth2 odeslat příchozí webový token JSON (JWT). Příchozí token je indikátorem o uživateli nebo žádosti o autorizaci. Azure AD B2C ověří token a pak extrahuje deklaraci identity.

Pokud chcete do žádosti o ověření zahrnout nápovědu tokenu ID, postupujte takto:

  1. Ve vlastní zásadě definujte technický profil nápovědy ID tokenu.
  2. V kódu vygenerujte nebo získejte token ID a pak nastavte token na proměnnou (například idToken).
  3. Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
  4. id_token_hint Přidejte parametr s odpovídající proměnnou, která ukládá token ID.
  5. Předejte extra seznam parametrů dotazu do atributu objektu extraQueryParameters konfigurace MSAL.
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
...

Konfigurujte protokolování

Knihovna MSAL generuje zprávy protokolu, které můžou pomoct s diagnostikou problémů. Aplikace může nakonfigurovat protokolování. Aplikace vám také může poskytnout vlastní kontrolu nad úrovní podrobností a o tom, jestli se protokolují osobní a organizační data.

Doporučujeme vytvořit zpětné volání protokolování MSAL a poskytnout uživatelům způsob odesílání protokolů, když mají problémy s ověřováním. MSAL poskytuje tyto úrovně podrobností protokolování:

  • Chyba: Něco se nepovedlo a vygenerovala se chyba. Tato úroveň se používá k ladění a identifikaci problémů.
  • Upozornění: Nemusí se nutně jednat o chybu nebo selhání, ale informace jsou určené pro diagnostiku a určení problémů.
  • Informace: MSAL protokoluje události, které jsou určeny pro informační účely, a ne nutně pro ladění.
  • Podrobné: Jedná se o výchozí úroveň. MSAL protokoluje podrobnosti chování knihovny.

Ve výchozím nastavení protokolovací nástroj MSAL nezachytává žádná osobní ani organizační data. Knihovna vám umožňuje povolit protokolování osobních a organizačních dat, pokud se tak rozhodnete.

Protokolovací nástroj MSAL by se měl nastavit co nejdříve v pořadí spuštění aplikace před provedením jakýchkoli požadavků MSAL. Nakonfigurujte MSAL logování v metodě AppDelegate.swiftapplication.

Následující fragment kódu ukazuje, jak nakonfigurovat protokolování MSAL:

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
    }

Vložené prostředí webového zobrazení

K interaktivnímu ověřování se vyžadují webové prohlížeče. Ve výchozím nastavení knihovna MSAL používá systémové webové zobrazení. Během přihlašování se knihovna MSAL otevře ve webovém zobrazení systému iOS s uživatelským rozhraním Azure AD B2C.

Další informace najdete v článku Přizpůsobení prohlížečů a webových zobrazení pro iOS/macOS .

V závislosti na vašich požadavcích můžete použít vložené webové zobrazení. Mezi vloženým webovým zobrazením a systémovým webovým zobrazením v MSAL jsou rozdíly ve vizuálním a jednotném přihlašování.

Snímek obrazovky znázorňující rozdíl mezi prostředím systémového webového zobrazení a vloženým prostředím webového zobrazení

Důležité

Doporučujeme použít výchozí platformu, což je obvykle systémový prohlížeč. Systémový prohlížeč je lepší pamatovat si uživatele, kteří se přihlásili dříve. Někteří zprostředkovatelé identity, jako je Google, nepodporují vložené zobrazení.

Chcete-li toto chování změnit, změňte webviewType atribut MSALWebviewParameters na wkWebView. Následující příklad ukazuje, jak změnit typ webového zobrazení na vložené zobrazení:

func initWebViewParams() {
    self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
    
    // Use embedded view experience
    self.webViewParameters?.webviewType = .wkWebView
}

Další kroky