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:
- Konfigurace ověřování v ukázkové aplikaci Swift pro iOS pomocí Azure AD B2C
- Povolení ověřování ve vlastní aplikaci Swift pro iOS pomocí Azure AD B2C
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:
- Postupujte podle pokynů v tématu Povolení vlastních domén.
-
kAuthorityHostName
Aktualizujte člena třídy pomocí vlastní domény. - 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:
- 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í.
- 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:
- 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í.
- Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
- Přidejte do
domain_hint
seznamu parametr s odpovídajícím názvem domény (napříkladfacebook.com
). - 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:
- Nakonfigurujte přizpůsobení jazyka.
- Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
- Přidejte do
ui_locales
seznamu parametr s odpovídajícím kódem jazyka (napříkladen-us
). - 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:
- Nakonfigurujte element ContentDefinitionParameters .
- Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
- Přidejte vlastní parametr řetězce dotazu, například
campaignId
. Nastavte hodnotu parametru (napříkladgermany-promotion
). - 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:
- Ve vlastních zásadách definujte technický profil nápovědy tokenu ID.
- V kódu vygenerujte nebo získejte token ID a pak ho nastavte na proměnnou (například
idToken
). - Vytvořte nebo použijte existující objekt seznamu k uložení dalších parametrů dotazu.
-
id_token_hint
Přidejte parametr s odpovídající proměnnou, která ukládá token ID. - 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í.
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
- Další informace najdete v tématu Možnosti konfigurace MSAL pro iOS Swift.