Sdílet prostřednictvím


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

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

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

Použití vlastní domény

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

Pokud chcete v adrese URL odebrat všechny odkazy na b2c, můžete v adrese URL žádosti o ověření nahradit název tenanta B2C contoso.onmicrosoft.com 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 v adrese URL pro ověřování použít vlastní doménu a ID tenanta, postupujte takto:

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

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

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

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

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

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

Během přihlašovací cesty uživatele 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.

Pokud chcete přihlašovací jméno předem naplnit, postupujte takto:

  1. Pokud používáte vlastní zásadu, přidejte požadovanou vstupní deklaraci identity, jak je popsáno v tématu Nastavení přímého přihlášení.
  2. Vyhledejte objekt konfigurace knihovny MSAL (Microsoft Authentication Library) a přidejte metodu withLoginHint() s nápovědou k 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ředběžný výběr zprostředkovatele identity

Pokud jste nakonfigurovali přihlašovací cestu pro vaši aplikaci tak, aby zahrnovala účty sociálních sítí, jako je Facebook, LinkedIn nebo Google, můžete zadat domain_hint parametr . Tento parametr dotazu poskytuje nápovědu k Azure AD B2C o zprostředkovateli sociální identity, který by se měl použít pro přihlášení. Pokud například aplikace zadá 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 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. Přidejte do domain_hint seznamu parametr s odpovídajícím názvem domény (například facebook.com).
  4. Předejte extra seznam parametrů dotazu do atributu objektu extraQueryParameters konfigurace knihovny 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ů pojmout různé jazyky tak, aby vyhovovaly potřebám vašich zákazníků. Další informace najdete v tématu Přizpůsobení jazyka.

Upřednostňovaný jazyk nastavíte 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. Přidejte do ui_locales seznamu parametr s odpovídajícím kódem jazyka (například en-us).
  4. Předejte extra seznam parametrů dotazu do atributu objektu extraQueryParameters konfigurace knihovny 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

S vlastními zásadami můžete předat vlastní parametr řetězce dotazu. Dobrým příkladem použití je, když chcete dynamicky mě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 knihovny 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 v rámci žádosti o autorizaci OAuth2 odeslat příchozí webový token JSON (JWT). Příchozí token je nápověda týkající se uživatele nebo žádosti o autorizaci. Azure AD B2C token ověří a pak deklaraci identity extrahuje.

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

  1. Ve vlastních zásadách definujte technický profil nápovědy tokenu ID.
  2. V kódu vygenerujte nebo získejte token ID a pak ho nastavte 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 knihovny 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
...

Konfigurace protokolování

Knihovna MSAL generuje zprávy protokolu, které mohou pomoci diagnostikovat problémy. Aplikace může nakonfigurovat protokolování. Aplikace vám také může poskytnout vlastní kontrolu nad úrovní podrobností a nad tím, 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, jak odesílat protokoly, když mají problémy s ověřováním. Knihovna 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í nutně dojít k chybě nebo selhání, ale informace jsou určené pro diagnostiku a určení problémů.
  • Informace: Knihovna MSAL protokoluje události, které jsou určené pro informační účely a ne nutně pro ladění.
  • Podrobné: Toto je výchozí úroveň. KNIHOVNA MSAL protokoluje úplné podrobnosti o 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 sekvenci spouštění aplikace před provedením jakýchkoli požadavků MSAL. Nakonfigurujte protokolování MSAL 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. Knihovna MSAL ve výchozím nastavení používá systémové webové zobrazení. Během přihlašování knihovna MSAL zobrazí webové 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 zobrazení WebView 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 knihovně MSAL existují rozdíly ve vizuálním a jednotném přihlašování.

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

Důležité

Doporučujeme použít výchozí nastavení platformy, což je obvykle systémový prohlížeč. Systémový prohlížeč si lépe pamatuje uživatele, kteří se přihlásili dříve. Někteří zprostředkovatelé identit, například Google, nepodporují prostředí vloženého zobrazení.

Pokud chcete 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