Aracılığıyla paylaş


Azure AD B2C kullanarak iOS Swift uygulamasında kimlik doğrulama seçeneklerini etkinleştirme

Önemli

1 Mayıs 2025 tarihinden itibaren Azure AD B2C artık yeni müşteriler için satın alınamayacak. SSS bölümünden daha fazla bilgi edinebilirsiniz.

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 yöntemleri açıklanmaktadır.

Başlamadan önce aşağıdaki makaleler hakkında bilgi sahibi olun:

Özel bir etki alanı kullanın

Ö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 süreci sırasında Azure AD B2C b2clogin.com alan adına yönlendirilmek yerine kendi alanınızda kalır.

URL'de tüm "b2c" referanslarını kaldırmak için, kimlik doğrulama isteği URL'sindeki B2C kiracı adınızı, contoso.onmicrosoft.com yerine kiracı kimliği GUID'niz ile değiştirebilirsiniz. Örneğin, https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/https://account.contosobank.co.uk/<tenant ID GUID>/ olarak değiştirebilirsiniz.

Kimlik doğrulama URL'sinde özel bir alan adı ve kiracı kimliğinizi kullanmak için aşağıdakileri yapın:

  1. Özel etki alanlarını etkinleştirme başlığındaki yönergeleri izleyin.
  2. Özel etki alanınız ile kAuthorityHostName sınıf üyesini güncelle.
  3. Sınıf üyesini kTenantNamekiracı 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ındaki 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.

Kullanıcı adını önceden doldurmak için aşağıdakileri yapın:

  1. Özel bir ilke kullanıyorsanız, Doğrudan oturum açmayı ayarlama bölümünde açıklandığı gibi gerekli giriş beyanını ekleyin.
  2. Microsoft Authentication Library (MSAL) yapılandırma nesnenizi bulun ve ardından oturum açma ipucunu içeren withLoginHint() metodunu ekleyin.
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, Azure AD B2C'ye oturum açmak için kullanılması gereken sosyal kimlik sağlayıcısı hakkında bir ipucu sağlar. Örneğin, uygulama belirtirse domain_hint=facebook.comoturum açma akışı doğrudan Facebook oturum açma sayfasına gider.

Kullanıcıları bir dış kimlik sağlayıcısına yönlendirmek için aşağıdakileri yapın:

  1. Dış kimlik sağlayıcınızın etki alanı adını kontrol edin. Daha fazla bilgi için bkz. Oturum açmayı sosyal bir sağlayıcıyayönlendirme.
  2. Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
  3. domain_hint İlgili etki alanı adını içeren parametresini listeye ekleyin (örneğin, facebook.com).
  4. 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:

  1. Dil özelleştirmesini yapılandırın.
  2. Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
  3. parametresini ui_locales ilgili dil koduyla listeye ekleyin (örneğin, en-us).
  4. 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 istediğiniz durumlardır.

Özel sorgu dizesi parametresi geçirmek için aşağıdakileri yapın:

  1. ContentDefinitionParameters öğesini yapılandırın.
  2. Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
  3. gibi campaignIdözel sorgu dizesi parametresini ekleyin. Parametre değerini ayarlayın (örneğin, germany-promotion).
  4. 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 ipucunu iletme

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:

  1. Özel ilkenizde bir kimlik belirteci ipucu teknik profili tanımlayın.
  2. Kodunuzda bir kimlik belirteci oluşturun veya alın ve belirteci bir değişken olarak ayarlayın (örneğin, idToken).
  3. Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
  4. id_token_hint parametresini, kimlik belirtecini depolayan ilgili değişkenle ekleyin.
  5. 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
...

Log kaydını yapılandırma

MSAL kitaplığı, sorunları tanılamaya yardımcı olabilecek günlük iletileri oluşturur. Uygulama log tutma işlemlerini yapılandırabilir. Uygulama ayrıca ayrıntı düzeyi ve kişisel ve kuruluş verilerinin 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ük göndermeleri için bir yol sağlamanızı öneririz. MSAL, şu günlük ayrıntı seviyelerini sağlar:

  • Hata: Bir sorun oluştu ve bir hata oluşturuldu. Bu düzey, hataları ayıklamak ve sorunları tanımlamak için kullanılır.
  • Uyarı: Hata veya hata olması şart değildir, ancak bilgiler tanılama ve sorunları belirleme amacıyla tasarlanmıştır.
  • Bilgi: MSAL, bilgi amaçlı olan ve hata ayıklama için 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.swift yönteminde MSAL application 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'ları özelleştirme makalesine bakın.

Gereksinimlerinize bağlı olarak, eklenmiş web görünümünü kullanabilirsiniz. Ekli 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.

Sistem web görünümü deneyimi ile eklenmiş web görünümü deneyimi arasındaki farkı gösteren ekran görüntüsü.

Ö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, webviewType özniteliğini MSALWebviewParameters olarak wkWebView olarak değiştirin. Aşağıdaki örnekte, web görünümü türünün eklenmiş görünüm olarak nasıl değiştireceği gösterilmektedir:

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

Sonraki Adımlar