Bu makalede önce FaceID ve TouchID doğrulama yöntemlerini inceledikten sonra Xamarin Forms uygulamalarımıza bu yapıları nasıl ekleyeceğimizden bahsedeceğim.

iOS Biometrik Doğrulama

Uygulamada biometrik yapıları nasıl kullanacağımıza geçmeden önce bu teknolojileri ve bunların iOS’da nasıl işlediğini görelim.

iOS’da biometrik kimlik doğrulama TouchID ve FaceID ile sağlanır. Apple’ın Human Interface Guideline’ınında bu API’leri kullanırken dikkat edilmesini önerdiği şeyler:

  • Kullanıcı biometrik doğrulamayı hiç kullanmamış veya sonradan kaldırmış olabilir. Uygulamanın buna uygun davrandığından emin olun.
  • Kullanıcıya tek bir giriş yöntemi sunun (FaceID) ve sadece gerekli durumlarda alternatif seçeneği (kullanıcı adı ve şifre) gösterin.
  • Kullanılan doğrulama yöntemini kullanıcıya anlaşılır şekilde belirtin. Örneğin FaceID kullanılıyorsa “Giriş Yap” yerine “FaceID ile Giriş Yap” yazmak gibi.
  • Cihazın desteklediği yapıya uygun terminolojiler kullanın. Örneğin; FaceID destekleyen cihazlarda TouchID terimini kullanmayın.
  • Uygulama içinde biometrik doğrulama ile ilgili ayarlamalar sunmaktan kaçının. Çünkü bu durum kullanıcının sistem üzerinden yapılan bu ayarların, uygulamanız içinden de değiştirilebildiğini düşünmesine neden olur.
  • Uygulamanızda sistem doğrulama yöntemlerini tanımlamak için sistem ikonlarını kullanmaktan kaçının. Bu durum karışıklığa neden olur ve kullanıcıda giriş yapması gerektiği algısı yaratır.

FaceID

iOS, yüz tanımlama sisteminde True Depth kamera sistemi kullanılır. Bu sistem sayesinde yüzün geometrisi çizilir. True Depth kamera, yüzün derinlik haritasını oluşturmak için yüze yansıttığı 30.000’in üzerinde görünmez noktayı analiz ederek yüz verilerini elde etmenin yanı sıra yüzün kızılötesi görüntüsünü de alır. Daha sonra bu verileri matematiksel bir ifadeye dönüştürerek, Secure Enclave (Ekstra bir güvenlik katmanı sağlamak için ana işlemciden yalıtılmış, donanım tabanlı bir anahtar yöneticisi içeren güvenli bir işlemci) ile korunan kayıtlı yüz verisiyle kıyaslar.

FaceID makyaj, sakal, gözlük, şapka gibi etmenlerle çalışacak şekilde tasarlanmıştır. Hatta karanlıkta bile çoğunlukla çalışır. Tabii eğer uzun sakalınızı kesmek gibi daha belirgin bir değişiklik yaptıysanız yüz verisini kaydetmeden önce PassCode’un girilmesini ister.

TouchID

iPhone’larda TouchID’yi destekleyen home tuşu safir’den yapılmıştır. Safir ile home tuşunun çizilmesi engellenmiş, bu sayede sensör korunmuş ve sensörün lens gibi davranarak parmak izini tanımlamaya odaklanması sağlanmıştır.

Home tuşunu çevreleyen çelik halka, parmağı algılayarak, Touch ID’ye parmak izini okumaya başlamasını iletir.

Sensör, kapasitif dokunuş ile derinin alt katmanlarından yüksek çözünürlüklü görüntü alır. Touch ID daha sonra bu bilgiyi analiz eder ve parmak izini üç temel türden biri olarak sınıflandırır: arch, loop veya whorl. Ayrıca insan gözünün göremediği küçük ayrıntıları da haritalar ve hatta gözeneklerin ve kenar yapılarının neden olduğu değişimleri inceler.

Three Fingerprint Types On White Background. Loop, Whorl, Arch ...

Touch ID birden fazla parmak izini okuyabilir. Parmak izinin matematiksel bir ifadesini oluşturur. Herhangi bir eşleşmeyi tanımlamak veya cihazın kilidini açmak için Secure Enclave’de kayıtlı parmak izi verileriyle kıyaslama yapar. Cihaza parmak izinin resmi değil yalnızca matematiksel ifadesi kaydedilir. Touch ID, eşleme doğruluğunu artırmak için kaydedilen parmak izlerinin zaman içindeki matematiksel ifadelerini aşamalı olarak günceller.

Xamarin Forms Uygulamasında TouchID ve FaceID Kullanımı

Kullanıcılara, Touch ID ve Face ID’li kimlik doğrulama mekanizması sunmak, onların minimum çabayla güvenli bir şekilde işlem yapmalarını sağlar. Bunun için iOS’da LocalAuthentication framework’ünü kullanırız.

Xamarin Forms uygulamamızda platforma özel olan bu yapıya Dependency Service yardımıyla erişiriz.

iOS uygulamasında biometrik doğrulamayı kullanmak için Info.plist’e NSFaceIDUsageDescription key’ini eklemeliyiz.

<key>NSFaceIDUsageDescription</key>
<string>Use Face ID/Touch ID instead of a password to access your account.</string>

iOS uygulamamızda BiometricService sınıfını tanımlayıp işlemleri burada yapalım.

Sensör tarafından okunan parmak izi/yüz datasıyla kayıtlı parmak izini/yüzü kıyaslamak için uygulamanın Secure Enclave ile iletişim kurması gerekir. Bu iletişimi kurmak içinLAContext sınıfı kullanılır.

 LAContext  context = new LAContext();

Doğrulama işlemine başlamadan önce cihazda biometrik desteği var mı ya da kayıtlı herhangi bir TouchID veya FaceID bulunuyor mu diye kontrol etmemiz gerekir. CanEvaluatePolicy(LAPolicy policy, out NSError error) metoduna, kontrol etmek istediğimiz LAPolicy parametresini göndererek doğrulama yöntemininin geçerliliğini test edebiliriz.

public enum LAPolicy : long
{
        DeviceOwnerAuthenticationWithBiometrics = 1,
        DeviceOwnerAuthentication = 2,
        DeviceOwnerAuthenticationWithWatch = 3,
        OwnerAuthenticationWithBiometricsOrWatch = 4
}

LAPolicy.DeviceOwnerAuthenticationile test edersek, alternatif olarak şifre ve kullanıcı adı yöntemi kullanılabilir. Ancak eğer sadece biometrik doğrulama kullanmak istiyorsak, bu durumda  LAPolicy.DeviceOwnerAuthenticationWithBiometrics değerini kullanmalıyız.

Kontrol işlemini tamamladıktan sonra doğrulama işlemine geçebiliriz.

var result = await context.EvaluatePolicyAsync(LAPolicy.DeviceOwnerAuthentication, message);

iOS kodu:

Xamarin Forms tarafı:

public interface IBiometricService
{
  Task<bool> LoginWithBiometrics();
}

Servisi şöyle çağırırız:

 var result = await DependencyService.Get<IBiometricService>().
LoginWithBiometrics();

Biometrik Doğrulama Yerine Alternatif Sunma

Doğrulama işlemi birçok sebepten dolayı başarısız olabilir. Bu durumlar için kullanıcıya bir alternatif sunmayı unutmamalıyız. Bu durumlardan bazıları şöyle sıralanabilir:

  • Kullanıcının cihazında TouchID veya FaceID desteklenmeyebilir.
  • Kullanıcı biometrik verisini cihaza kaydetmemiş veya Passcode’u ayarlamamış olabilir.
  • Kullanıcı işlemi iptal edebilir/ kullanmak istemeyebilir.
  • Touch ID veya Face ID kullanıcıyı tanımlayamayabilir.

Olası tüm durumları incelemek için LAError.Code.

Uygulama kodlarına buradan erişebilirsiniz.

Kaynaklar:

Share:

Leave a reply

Your email address will not be published. Required fields are marked *