Aracılığıyla paylaş


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:

Ö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:

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

  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 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.comoturum 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:

  1. 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.
  2. Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
  3. domain_hint İlgili etki alanı adına sahip 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ırma.
  2. Ek sorgu parametrelerini depolamak için mevcut bir liste nesnesi oluşturun veya kullanın.
  3. ui_locales İlgili dil kodunu içeren parametresini 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 istemenizdir.

Özel bir 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 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:

  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. Parametreyi id_token_hint , kimlik belirtecini depolayan karşılık gelen değişkene 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
...

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.

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 özniteliğini webviewTypeMSALWebviewParameters olarak wkWebViewdeğ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