Hepimiz mobil cihazlarımızda birçok bilgiyi saklıyoruz. İnsanlar, uygulama içi ödemeler yapmak gibi hassas işlemleri gerçekleştirmek için düzenli olarak akıllı telefonlar ve tabletler kullanıyor.Bu yüzden mobil uygulamalarda güvenlik çok önemli bir konumdadır. Güvenliği sağlamak için çeşitli yöntemleri uygulayabilirsiniz. Kullanıcının sisteme erişirken kim olduğunu kanıtlama işlemi olan kimlik doğrulama, güvenlik yöntemlerden biridir. PIN, şifre, güvenlik anahtarı ve biyometrik (parmak izi, yüz algılama) kimlik doğrulama çeşitlerinden birini kullanarak uygulamanızın bazı bölümlerini veya tüm uygulamanızı kilitlemeyi düşünebilirsiniz.
Parola ve PIN kimlik doğrulama yöntemlerinde, giriş bilgilerini unutma ya da karıştırma ihtimaliniz yüksektir. Fakat Biyometrik parmak izi doğrulama, parmak ucunuzu dokunmatik sensöre basarak yapılan bir işlem olduğu için uygulaması daha kolaydır. Parola ve PIN kimlik doğrulama gibi yöntemleri kullandığınızda birisinin şifreleri tahmin edemeyeceğinin veya kullanıcının cihazına casus yazılım gibi araçlar yoluyla şifresini sızdırmayacağına dair bir garanti yoktur. Parmak izi ise benzersiz ve tahmin edilmesi imkansız olduğundan güvenliği daha yüksek bir yöntemdir.
Bu makalemde, bir Android uygulamasında AndroidX Biometric kütüphanesini kullanarak, parmak izi kimlik doğrulama yöntemini örnekleyeceğim.
Örneğimizi uyguladığımızda aşağıdaki gibi bir ekran görüntüsünü elde edeceğiz.
Örneklediğim projemin kodlarını indirmek isterseniz; yapmanız gereken tek şey aşağıya koyduğum KODLARI İNDİR resmine tıklamak.
Birkaç adımda bir Android uygulamasında AndroidX Biometric kütüphanesini kullanarak, parmak izi kimlik doğrulamayı nasıl yapacağımızı görelim.
1-Gerekli Kütüphanelerin Eklenmesi
Biometric API ile parmak izi doğrulama yapabilmek için AndroidX kütüphanesine geçmeniz gerekir.Bu yüzden projedeki appcompat, constraintlayout ve biometric kütüphanelerinin tanımlamaları androidx ile başlayacaktır.
Dilerseniz AndroidX Kütüphanesine Geciş adlı makalemi okuyarak, var olan projelerinizi AndroidX yapısına kolaylıkla geçişini sağlayabilirsiniz.
Android Studio Ide ile oluşturduğum projemin app dizinin altındaki build.gradle dosyasını açıyoruz. Dependencies kod bloklarının arasına aşağıdaki kodları yerleştirerek Biometric kütüphanesini yüklüyoruz.
implementation "androidx.appcompat:appcompat:1.1.0" implementation "androidx.constraintlayout:constraintlayout:2.0.0-beta4" implementation "androidx.biometric:biometric:1.0.1"
2-Projede İzinlerin Tanımlanması
Cihazın desteklediği tüm farklı biyometrik kimlik doğrulama işlemlerini kullanabilmek için bir tane izin tanımlamamız gerekir. Aşağıdaki izin kodunu da AndroidManifest.xml dosyasında application tag’nin üst kısmına yerleştirin.
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
3-Arayüz Kodlaması
Örneğimizdeki görüntüyü elde etmek içim, 1 tane xml dosyasında kodlama yapmamız gerekmektedir. activity_main xml kodlarımızda, constraintlayout içine Button ekledim.
activity_main xml kodlarımız;
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/launchAuthentication" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/auth" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.038" /> </androidx.constraintlayout.widget.ConstraintLayout>
4-Java kodlama ile işlevsellik oluşturma
AndroidX Biometric API’nin içinde bulunan BiometricPrompt sınıfını kullanarak, parmağı sensöre dokundurduğunuz anda, telefonda kayıtlı iz ile karşılaştırma yaparak uygulama içinde kimlik doğrulama yapar.Daha detaylı kod açıklamaları, yorum tagları içinde bulunmaktadır.
import androidx.appcompat.app.AppCompatActivity; import androidx.biometric.BiometricPrompt; import android.os.Bundle; import java.util.concurrent.*; import android.util.Log; import android.view.View; import androidx.annotation.NonNull; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Executor newExecutor = Executors.newSingleThreadExecutor(); //Parmağı sensöre dokundurduğunuz anda, telefonda kayıtlı iz ile //karsılastırma için BiometricPrompt sınıfının içindeki işlem durumu metodları oluşturulur final BiometricPrompt myBiometricPrompt = new BiometricPrompt(this, newExecutor, new BiometricPrompt.AuthenticationCallback() { //Bu metodda sensöre dokundurduğunuzda, bir hatayla karsılaşıp karşılaşmadığınızın kontrolunu yaptık //Örnek hatalar; cihazın dokunmatik sensörü kir kaplıdır, kullanıcı bu cihaza herhangi bir parmak izi kaydetmemiştir veya tam biyometrik tarama yapmak için yeterli bellek yoktur @Override public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) { super.onAuthenticationError(errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) { } else { Log.d("MainActivity", "bir hata oluştu"); } } //Bu metod, parmak izi cihazda kayıtlı parmak izlerinden biriyle başarılı bir şekilde eşleştiğinde çağrılır. @Override public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) { super.onAuthenticationSucceeded(result); Log.d("MainActivity", "Parmak izi başarıyla tanındı"); } //Bu metodda parmak izi tanıma işlemi başarılı olmadığında, yapılacak işlemler yazılmalı @Override public void onAuthenticationFailed() { super.onAuthenticationFailed(); Log.d("MainActivity", "Parmak izi tanınmadı"); } }); //kimlik doğrulama iletişim kutusunda görünmesi gereken metni tanımlamanız ve kimlik doğrulamasını iptal etmesini sağlayan metoda isim atama final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder() .setTitle("Başlık yazılacak alan") .setSubtitle("Altbaşlık yazılacak alan") .setDescription("Açıklama yazılacak alan") .setNegativeButtonText("İptal") .build(); findViewById(R.id.launchAuthentication).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myBiometricPrompt.authenticate(promptInfo); } }); } }
1 Yorum
Tebrikler