iOS'ta Biyometrik Kimlik Giriş

Biyometrik doğrulama, modern mobil güvenlik temel taşı haline geldi, rahatlık ve koruma arasında bir denge sunuyor. iOS geliştiricileri için, LocalAuthentication framework, Touch ID, Face ID ve cihaz geçiş doğrulamasını sağlamak için basit bir API sağlar.Bu makale, yerelAuthentication kullanarak biyometrik doğrulama işlemine giriş yapmak için ilk kurulumdan başlayarak, uygulamanızı sağlamak için en yüksek kullanıcı gizliliği ve güvenliği standartlarını karşılar.

Bu kılavuzun sonunda, biyometrik erişilebilirliği kontrol etmeyi, doğrulama için kullanıcıları, hataları özenle ele almayı ve Apple'ın kullanıcı gizliliği ve veri koruması için yönergelerini takip ederken anlayacaksınız.

YerelAuthentication Framework Framework'ü Anlayın

YerelAuthentication framework, iOS 8'de tanıtıldı, kullanıcı kimliğini biyometrik veya bir cihaz geçiş kodu ile değerlendirmek için birleşik bir arayüz sağlar. Touch ID ve Face ID arasındaki temel donanım farklılıkları özetliyor, tüm desteklenen iOS cihazları üzerinde sorunsuz bir şekilde çalışan doğrulama mantığı yazmanıza izin veriyor.

Çerçevenin Anahtar bileşenleri şunlardır:

  • [FONT=0)LAContext:[Dönetici:[Dönetici:0)[Dönetici:[Dönlendirme:[Dönlendirme) Kontrol politikalarını yöneten merkezi nesne, yerelleştirilmiş neden dizeleri ve geri çekilme davranışı.
  • [FONT=0)LAPolicy:[Dönetici:[Dönetici:0)[0) ve [[Dönderlik:[0)))[Bloglar (Dönderler) ve [[Dönderler))
  • [FONT:0)LAError:[Dönetici:[Dönetici:0)[Dönetici:0))) Uygulamanızı neden doğrulamanız başarısız olduğunu bildiren hata kodları -biometri mevcut değil, kullanıcı iptal etti, kodlanmadı ve diğerleri.

Çerçeve kullanmak basit olsa da, doğru uygulama kullanıcı deneyimine dikkat gerektirir, hata işleme ve güvenlik. Politika seçeneklerini daha ayrıntılı olarak inceleyelim.

Kimlik Politikaları Açıklandı

  • [[Dint:2) - Eğer biyometri (Fotoğraf ID veya Face ID) kayıtlı ve mevcutsa, bu politika sadece biyometrik doğrulama için kullanıcıyı uyarır.Eğer biyometri mevcut değilse, politika değerlendirme bir geçiş yapmadan başarısız olur.Bu, zayıf riskli işlemler için uygundur ve biyometri eksikliğini idare eder.
  • [[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜ: Bu politika ilk deneme biyometrik doğrulama denemeleri yapar.Eğer biyometri kullanılamıyorsa, kullanıcı geçişlerini hala doğrulayamaz veya kullanıcı biyometrik olarak iptal eder, uygulamanız cihaz geçiş koduna geri dönebilir.Bu, en fazla doğrulama senaryoları için önerilen politikadır.

Geçişin sadece kullanıcının biyometrik olarak iptal etmesinden sonra veya biyometri başarısız olup kullanıcı "Enter Passcode" daki bu olayları basitleştirmek için doğru bir şekilde ele almanız önemlidir.

Step-by-Step Uygulama

Biyometrik doğrulamayı uygulamak beş açık adım içerir: çerçeveyi ithal etmek, örneğin istenen politikanın değerlendirilebilir olup değerlendirilmesini kontrol etmek ve sonucu işlemek. Aşağıda kod örnekleri ile ayrıntılı bir kesintidir.

1. Çerçeveyi İthalat

Kontrolsüzlüğü kullanmayı planladığınız herhangi bir Swift dosyasında, bu ithalat size erişim verir: “ŞUygunluk 7” ve tüm hata türleri.

import LocalAuthentication

2. Bir LAContext oluşturun

[[GÖRÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ

let context = LAContext()
context.localizedFallbackTitle = "Use Passcode"

3. Kontrol Biyometrik Erişilebilirlik

Kullanıcıyı hızlı bir şekilde göndermeden önce, seçilen politikanın değerlendirilebilir olup olmadığını kontrol etmelisiniz.Bu kontrol, kullanıcıyı karıştırabilecek bir hatadan kaçınmak için gereklidir.Programın kullanımı hakkında bilgi sahibi olmak için gerekli olan politikayı kullanın.The method returns a Boolean value.If it returns theTELFLT:14).

var error: NSError?
let canEvaluate = context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error)

if !canEvaluate {
 // Handle the error – see section on error handling below
 print("Authentication not available: \(error?.localizedDescription ?? "Unknown error")")
 return
}

Başarısızlık için ortak nedenler şunlardır: cihaz biyometriyi desteklemiyor, parmak izi veya yüz kayıtlı değil, cihaz geçiş kodu ayarlanmadı, veya uygulama Face ID için bir hak sahibi değildir (en iyi uygulamalar).

4. Politikayı Evaluate

Politikanın değerlendirilebilir olduğunu doğruladıktan sonra, çağrıyı GÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ

context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate to access your secure data") { success, evaluateError in
 DispatchQueue.main.async {
 if success {
 // Authentication successful
 print("User authenticated successfully")
 } else {
 // Authentication failed or was cancelled
 print("Authentication failed: \(evaluateError?.localizedDescription ?? "Unknown error")")
 }
 }
}

Tamamlanan eller ana iplik üzerinde çalıştırmak için garanti edilmez. Her zaman yukarıdaki gibi ana kuyrukta UI güncelleştirmeleri ve sonraki mantık gönder.

5. Sonuçla

Kimlik doğrulama başarılı olduğunda, içeriği veya eylemleri korumanıza izin verebilirsiniz. Başarısız olduğunda, nedenini incelemenin sebebini belirlemeniz gerekir.

  • [[Düzücü:0).userCancel:[Dönetici:[Dönetici:0) Kullanıcı, biyometrik olarak “Cancel”i aldattı.
  • .userFallback: The user tapped the fallback button (e.g., “Enter Password”). This triggers the passcode entry if using .deviceOwnerAuthentication, but if you only used .deviceOwnerAuthenticationWithBiometrics, no fallback occurs. In that case, you should present your own passcode entry screen.
  • .biometryNotAvailable: Biometry is not available on this device (e.g., missing hardware). You should switch to passcode-only authentication.
  • .biometryNotEnrolled: No biometric data is enrolled. Prompt the user to set up Touch ID or Face ID in Settings.
  • .biometryLockout: Too many failed attempts; the system has locked biometry. You need to fall back to the passcode. The system passcode will reset the lockout.
  • .passcodeNotSet: The device has no passcode configured. The user must set a passcode for biometry to work. Display an alert directing them to Settings.

Handling each of these cases gracefully is essential for a smooth user experience. For a production app, consider centralising your authentication logic in a manager class and providing clear feedback to the user.

Complete Example with Error Handling

Below is a more complete example that demonstrates a real-world authentication flow. It checks availability, handles errors with appropriate user alerts, and provides a fallback to a custom passcode entry if the user cancels biometry.

import LocalAuthentication
import UIKit

class BiometricAuthManager {
 static let shared = BiometricAuthManager()

 private let context = LAContext()

 func authenticate(completion: @escaping (Bool, String?) -> Void) {
 var error: NSError?
 context.localizedFallbackTitle = "Use Passcode"

 guard context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) else {
 // Determine the reason why authentication is unavailable
 let message = errorMessage(for: error)
 completion(false, message)
 return
 }

 // Possibly show a loading state
 context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate to access your account") { success, evaluateError in
 DispatchQueue.main.async {
 if success {
 completion(true, nil)
 } else {
 let message = self.errorMessage(for: evaluateError as? LAError)
 completion(false, message)
 }
 }
 }
 }

 private func errorMessage(for error: LAError?) -> String {
 guard let error = error else {
 return "Authentication could not be completed."
 }
 switch error.code {
 case .biometryNotAvailable:
 return "Biometric authentication is not available on this device."
 case .biometryNotEnrolled:
 return "No biometric data is enrolled. Please set up Face ID or Touch ID in Settings."
 case .biometryLockout:
 return "Too many failed attempts. Please use your passcode to unlock biometrics."
 case .passcodeNotSet:
 return "A device passcode is required to use biometric authentication."
 case .userCancel:
 return "Authentication cancelled by user."
 case .userFallback:
 return "User chose to use the passcode."
 default:
 return "Authentication failed: \(error.localizedDescription)"
 }
 }
}

Bu sınıf kimlik doğrulama mantığını genişletir ve bir kullanıcı dostu mesajla temiz bir başarı / başarısızlık döndürür. Görüş kontrolörleriniz buna uygun şekilde tepki verebilir.

En İyi Uygulamalar ve Üretim Tahminleri

Yukarıdaki kod sağlam bir temel sağlarken, uygulamanızın sağlam, güvenli ve kullanıcı dostu olmasını sağlayacaktır.

Her zaman bir Passcode Fallback sağlayın

Belirli durumlarda bir geçiş kodunu kullanmayı tercih ederseniz bile, kendi geçiş giriş ekranınızın hazır olması gerekir. Birçok kullanıcı biyometriklere kayıtlı olabilir veya belirli durumlarda bir geçiş kodunu kullanmayı tercih edebilir. Apple'ın İnsan Interface Kılavuzları, biyometriye açık bir alternatif sunmak için tavsiye eder.

Descriptive Localized Reason

Örneğin, “Herhangi bir hesapta bulun”, farklı diller için bu dizeyi netleştirmek için daha iyi bir şekilde ifade etmek gerekir.

Saygı Kullanıcı Gizlilik

Hiçbir zaman biyometrik veriler (fingerprint şablonları veya yüz haritaları) kendiniz depolamaz. Sistem bu verileri güvenli Enklavuzda güvenli bir şekilde yönetir. Uygulamanız yalnızca bir Boolean başarı / malilure sonucu alır, gerçek biyometrik veriler değil.Bu ayrımı atlamak için denemeyin.

Gerçek Cihazlarda Test

Simülatörün sınırlı biyometrik simülasyon yetenekleri vardır. Her zaman gerçek iPhone'larda ve iPad'lerde dokunmak için baskı yapmak gerekir. Face ID için, aynı zamanda [[ŞUygunT:29) anahtarını da dahil etmelisiniz. aksi takdirde, uygulama Face ID'yi değerlendirmeye çalışırken çarpacaktır.

App Lifecycle'ı işe alın

Uygulamanız bir arka plan durumunu güvence altına almak için biyometrik doğrulama kullanırsa, uygulama ön plana döndüğünde yeniden etkinleştirin.You can monitorize theD:3} ve tekrar doğrulama için hızlı bir şekilde - ortak bir model sadece bir süre sonra yeniden tanımlanması gerekir.

Güçlü Güvenlik için Diskle Birleşin

Biyometrik kimlik yalnızca kullanıcının kimliğini kontrol anında doğrular. kalıcı güvenlik için (örneğin API’leri depolamak), cihazı kilitlendiğinde otomatik olarak kilitlenen biyometrikleri birleştirin.Use theDANT:32). class with theETHFLT:33 orurFLT:34 bayraklar to enable that storage steps only be access after successful biometric or passcode authentication.The windows then actions as a safe to the device is lock.Use the device is lock.

Sonra geri dönüş

Biyometri çok sayıda başarısız denemeden dolayı kilitlendiğinde, cihazın geçiş koduna geri dönmeniz gerekir. Sistem geçiş kodu otomatik olarak biyometrik kilitlenmeyi sıfırlayacak, böylece başarılı bir geçiş girişten sonra, gelecekteki biyometrik girişimler tekrar işe yaramayacaktır; brute-force saldırılarına karşı korumak için güvenlik özelliğidir.

Touch ID ve Face ID arasındaki farklar

YerelAuthentikasyon çerçevesi çoğu farklılığa rağmen, aklınızda tutmak için birkaç nüks vardır:

  • [FONT:0)Face ID, arayüzü etiketleri ve ikonları uygun olarak ayarlamanızı gerektirir.[FONTT:0).
  • [FONT:0)Face ID'nin seyahat etmek için daha yüksek hassasiyete sahip olması gerekir.[DÜT:1] Kullanıcı doğrudan cihazınıza bakmalı. uygulamanızın Face ID'ye neden ihtiyaç duyduğundan emin olun.
  • [FONT:0) Face ID için alternatif bir görünüm:[Dönetici: 0) iOS 15.4 ve daha sonra kullanıcıların alternatif bir görünüm (örneğin, gözlük veya maske ile) oluşturmalarına izin verir.
  • [[0)Mask Face ID ile destek:) Son iOS versiyonları Apple Watch kullanarak bir maske ile kilidini açan.For app- level authentication, standart Face ID hala tam yüz tanıma gerektirir, çünkü kullanıcı Apple Watch ile maske kullanımı tercih ettiğinde.

Hata Deep Dive

Kısa bir şekilde ortak hataları kapıyoruz, ancak her birine bir kullanıcı dostu şekilde nasıl cevap vereceği konusunda işbirliğine değer.

Error CodeUser Feedback
biometryNotAvailableShow an alert: “Face ID / Touch ID is not available on this device. Please use your passcode.” Then offer your custom passcode screen.
biometryNotEnrolledPresent an alert that directs the user to Settings > Face ID & Passcode (or Touch ID & Passcode). You can open Settings directly using UIApplication.openSettingsURLString.
biometryLockoutPrompt the user to authenticate using the device passcode. The system passcode entry will reset the lockout. If you use the .deviceOwnerAuthentication policy, the system automatically handles the passcode prompt. If you used .deviceOwnerAuthenticationWithBiometrics, you must fall back to your own passcode entry or invoke the .deviceOwnerAuthentication policy again to trigger the system passcode UI.
passcodeNotSetAlert the user that a device passcode is required. Direct them to Settings to set one. You cannot continue until the passcode is configured.
userCancelSimply dismiss or return to the previous screen. Do not show an error; the user intentionally cancelled.
userFallbackThe user chose the fallback option. Present your own passcode entry screen (or rely on the system passcode if you used the combined policy).

Performans ve Threading

[[DÜŞÜNÜŞÜŞÜNÜŞÜŞÜŞÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ

Biyometrik Kimlik Doğrulamayı Test

iOS Simulator'da Donanım menüsünü kullanarak biyometrik kimlik doğrulamasını isteyebilirsiniz.In Touch ID, "Ttching Touch" veya "Non-matching Touch" seçeneğini tam olarak simüle edemezsiniz.For Face ID, the Simulator allows you to enrol a face and then perform pair or non-matching attempts. ancak, bazı senaryolar (örneğin kilitleme) tamamen simüle edilemez.

Ayrıca, Xcode'un test planlarını gerçek donanıma güven olmadan doğrulama yöneticisinin etrafındaki birimlerin testlerini yazmayı deneyebilirsiniz.Bu, kodu bağımlılık enjeksiyonu ile tasarladınız.Bu, gerçek donanıma güvenmeksizin hata işleme mantığını test etmenizi sağlar.

Dış Kaynaklar

Daha fazla okuma ve resmi belgeler için aşağıdakilere bakınız:

  • [0] Apple'ın LocalAuthentication Documentation[[Dönemli Belgeler[Dönemli)[[0]
  • [FONT=0) [[Döncüm Sınıf Referansı[Dönemli: 1)
  • [0]WWWDC 2017 – Face ID ile Yapı Uygulamaları).
  • [FONT=0)Keychain Services and Biometric Access Control).

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Yerel Authentikasyon çerçevesi ile biyometrik doğrulama, kullanıcı gizliliğine saygı duyan ve Apple'ın sıkı yönergeleriyle karşılaşan bir doğrulama sistemi oluşturabilirsiniz.In check accessibility, handle errors Elegantly, and provide reliable fallback options, you can build an authentication system that respects user privacy and meet Apple's solid codes.

Unutmayın ki biyometrik doğrulama sadece kapsamlı bir güvenlik stratejisinin bir parçasıdır. Bir sonraki iOS projesinde güvenli depolama ile birleştirin.Kullanıcılarınızı en yüksek koruma seviyesine sunmak için uygun oturum yönetimi.Bu makalede paylaşılan kod ve en iyi uygulamalarla, Touch ID ve Face ID'yi bir sonraki iOS projesinize entegre etmek için iyi donanımlısınız.