AndroidX Biometric API ile Parmak İzi Doğrulama

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.

androidx-biometric

Ö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);
            }
        });

    }
}

 

 

Tavsiye Edilen Yazılar

1 Yorum


Gokhan Tercan için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir