Azure AD B2C kullanarak iOS Swift uygulamasında kimlik doğrulama seçeneklerini etkinleştirme
Bu makalede, iOS Swift uygulamanız için Azure Active Directory B2C (Azure AD B2C) kimlik doğrulama deneyimini etkinleştirme, özelleştirme ve geliştirme yolları açıklanmaktadır.
Başlamadan önce aşağıdaki makaleler hakkında bilgi sahibi olun:
- Azure AD B2C kullanarak örnek bir iOS Swift uygulamasında kimlik doğrulamayı yapılandırma
- Azure AD B2C kullanarak kendi iOS Swift uygulamanızda kimlik doğrulamasını etkinleştirme
Özel etki alanı kullanma
Özel bir etki alanı kullanarak kimlik doğrulama URL'sini tamamen markalayabilirsiniz. Kullanıcı açısından bakıldığında, kullanıcılar kimlik doğrulama işlemi sırasında Azure AD B2C b2clogin.com etki alanı adına yönlendirilmek yerine etki alanınızda kalır.
URL'deki "b2c" öğesine yapılan tüm başvuruları kaldırmak için, kimlik doğrulama isteği URL'sindeki B2C kiracı adınızı contoso.onmicrosoft.com kiracı kimliği GUID'nizle de değiştirebilirsiniz. Örneğin, olarak değiştirebilirsiniz https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
https://account.contosobank.co.uk/<tenant ID GUID>/
.
Kimlik doğrulama URL'sinde özel bir etki alanı ve kiracı kimliğinizi kullanmak için aşağıdakileri yapın:
- Özel etki alanlarını etkinleştirme başlığındaki yönergeleri izleyin.
- Sınıf üyesini
kAuthorityHostName
özel etki alanınızla güncelleştirin. - Sınıf üyesini
kTenantName
kiracı kimliğiniz ile güncelleştirin.
Aşağıdaki Swift kodu, değişiklik öncesinde uygulama ayarlarını gösterir:
let kTenantName = "contoso.onmicrosoft.com"
let kAuthorityHostName = "contoso.b2clogin.com"
Aşağıdaki Swift kodu, değişiklik sonrasında uygulama ayarlarını gösterir:
let kTenantName = "00000000-0000-0000-0000-000000000000"
let kAuthorityHostName = "login.contoso.com"
Oturum açma adını önceden doldurma
Oturum açma kullanıcı yolculuğu sırasında uygulamanız belirli bir kullanıcıyı hedef alabilir. Bir uygulama bir kullanıcıyı hedeflediğinde, yetkilendirme isteğinde login_hint
kullanıcının oturum açma adıyla sorgu parametresini belirtebilir. Azure AD B2C oturum açma adını otomatik olarak doldurur ve kullanıcının yalnızca parolayı sağlaması gerekir.
Oturum açma adını önceden doldurulmak için aşağıdakileri yapın:
- Özel bir ilke kullanıyorsanız, doğrudan oturum açmayı ayarlama bölümünde açıklandığı gibi gerekli giriş beyanını ekleyin.
- Microsoft Authentication Library (MSAL) yapılandırma nesnenizi arayın ve oturum açma ipucuyla yöntemini ekleyin
withLoginHint()
.
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
...
Kimlik sağlayıcısını önceden seçme
Uygulamanızın oturum açma yolculuğunu Facebook, LinkedIn veya Google gibi sosyal hesapları içerecek şekilde yapılandırdıysanız parametresini domain_hint
belirtebilirsiniz. Bu sorgu parametresi, oturum açmak için kullanılması gereken sosyal kimlik sağlayıcısı hakkında B2C'yi Azure AD için bir ipucu sağlar. Örneğin, uygulama belirtirse domain_hint=facebook.com
oturum açma akışı doğrudan Facebook oturum açma sayfasına gider.
Kullanıcıları dış kimlik sağlayıcısına yönlendirmek için aşağıdakileri yapın:
- Dış kimlik sağlayıcınızın etki alanı adını denetleyin. Daha fazla bilgi için bkz. Oturum açmayı sosyal hizmet sağlayıcısına yeniden yönlendirme.
- Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
domain_hint
İlgili etki alanı adına sahip parametresini listeye ekleyin (örneğin,facebook.com
).- Ek sorgu parametreleri listesini MSAL yapılandırma nesnesinin
extraQueryParameters
özniteliğine geçirin.
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
...
Kullanıcı arabirimi dilini belirtme
Azure AD B2C'de dil özelleştirmesi, kullanıcı akışınızın müşterilerinizin ihtiyaçlarına uygun çeşitli dilleri barındırmasını sağlar. Daha fazla bilgi için bkz . Dil özelleştirme.
Tercih edilen dili ayarlamak için aşağıdakileri yapın:
- Dil özelleştirmesini yapılandırma.
- Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
ui_locales
İlgili dil kodunu içeren parametresini listeye ekleyin (örneğin,en-us
).- Ek sorgu parametreleri listesini MSAL yapılandırma nesnesinin
extraQueryParameters
özniteliğine geçirin.
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
...
Özel sorgu dizesi parametresi geçirme
Özel ilkelerle, özel bir sorgu dizesi parametresi geçirebilirsiniz. İyi bir kullanım örneği, sayfa içeriğini dinamik olarak değiştirmek istemenizdir.
Özel bir sorgu dizesi parametresi geçirmek için aşağıdakileri yapın:
- ContentDefinitionParameters öğesini yapılandırın.
- Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
- gibi
campaignId
özel sorgu dizesi parametresini ekleyin. Parametre değerini ayarlayın (örneğin,germany-promotion
). - Ek sorgu parametreleri listesini MSAL yapılandırma nesnesinin
extraQueryParameters
özniteliğine geçirin.
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
...
Kimlik belirteci ipucu geçirme
Bağlı olan taraf uygulaması, OAuth2 yetkilendirme isteğinin bir parçası olarak bir gelen JSON Web Belirteci (JWT) gönderebilir. Gelen belirteç, kullanıcı veya yetkilendirme isteği hakkında bir ipucudur. Azure AD B2C belirteci doğrular ve ardından talebi ayıklar.
Kimlik doğrulama isteğine kimlik belirteci ipucu eklemek için aşağıdakileri yapın:
- Özel ilkenizde bir kimlik belirteci ipucu teknik profili tanımlayın.
- Kodunuzda bir kimlik belirteci oluşturun veya alın ve belirteci bir değişken olarak ayarlayın (örneğin,
idToken
). - Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
- Parametreyi
id_token_hint
, kimlik belirtecini depolayan karşılık gelen değişkene ekleyin. - Ek sorgu parametreleri listesini MSAL yapılandırma nesnesinin
extraQueryParameters
özniteliğine geçirin.
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
...
Günlüğü yapılandırma
MSAL kitaplığı, sorunları tanılamaya yardımcı olabilecek günlük iletileri oluşturur. Uygulama günlüğü yapılandırabilir. Uygulama ayrıca ayrıntı düzeyi ve kişisel ve kurumsal verilerin günlüğe kaydedilip kaydedilmediği üzerinde özel denetim sağlayabilir.
Bir MSAL günlüğe kaydetme geri çağırması oluşturmanızı ve kullanıcıların kimlik doğrulaması sorunları olduğunda günlükleri göndermesi için bir yol sağlamanızı öneririz. MSAL şu günlük ayrıntıları düzeylerini sağlar:
- Hata: Bir sorun oluştu ve bir hata oluştu. Bu düzey, hataları ayıklamak ve sorunları belirlemek için kullanılır.
- Uyarı: Hata veya hata olması şart değildir, ancak bilgiler tanılama ve sorunları belirleme amacıyla hazırlanmıştır.
- Bilgi: MSAL, bilgilendirme amaçlı olan ve hata ayıklama amaçlı olması gerekmeyen olayları günlüğe kaydeder.
- Ayrıntılı: Bu varsayılan düzeydir. MSAL, kitaplık davranışının tüm ayrıntılarını günlüğe kaydeder.
Varsayılan olarak, MSAL günlükçü herhangi bir kişisel veya kurumsal veri yakalamaz. Kitaplık, karar verirseniz kişisel ve kurumsal verilerin günlüğe kaydedilmesini etkinleştirme seçeneği sunar.
MSAL günlükçü, herhangi bir MSAL isteği yapılmadan önce uygulama başlatma sırasında mümkün olduğunca erken ayarlanmalıdır. AppDelegate.swiftapplication
yönteminde MSAL günlüğünü yapılandırın.
Aşağıdaki kod parçacığında MSAL günlüğünün nasıl yapılandırılır gösterilmektedir:
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
}
Eklenmiş web görünümü deneyimi
Etkileşimli kimlik doğrulaması için web tarayıcıları gereklidir. Varsayılan olarak, MSAL kitaplığı sistem web görünümünü kullanır. Oturum açma sırasında MSAL kitaplığı, Azure AD B2C kullanıcı arabirimiyle iOS sistem web görünümünü açar.
Daha fazla bilgi için iOS/macOS için tarayıcıları ve WebView'leri özelleştirme makalesine bakın.
Gereksinimlerinize bağlı olarak, eklenmiş web görünümünü kullanabilirsiniz. Katıştırılmış web görünümü ile MSAL'deki sistem web görünümü arasında görsel ve çoklu oturum açma davranışı farklılıkları vardır.
Önemli
Normalde sistem tarayıcısı olan platform varsayılanını kullanmanızı öneririz. Sistem tarayıcısı, daha önce oturum açmış olan kullanıcıları hatırlamakta daha iyidir. Google gibi bazı kimlik sağlayıcıları ekli görünüm deneyimini desteklemez.
Bu davranışı değiştirmek için özniteliğini webviewType
MSALWebviewParameters
olarak wkWebView
değiştirin. Aşağıdaki örnek, web görünümü türünü eklenmiş görünüm olarak değiştirme işlemini gösterir:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
// Use embedded view experience
self.webViewParameters?.webviewType = .wkWebView
}
Sonraki adımlar
- Daha fazla bilgi edinmek için bkz. iOS için MSAL Swift yapılandırma seçenekleri.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin