5 lépés a biometrikus hitelesítés megvalósításához Androidban

, Author

Nemrég volt alkalmam dolgozni a Google által idén kiadott új BiometricPrompt API funkcióval. Bár az ujjlenyomat-hitelesítés támogatása már az Android 6.0 óta elérhető, az új BiometricPrompt nagyobb pontosságot és egységesebb biztonsági szintet ígér az alkalmazásunkat futtató összes eszközön.

Mivel nemrég biometrikus hitelesítést valósítottam meg egy androidos alkalmazásban, úgy gondoltam, rávilágítok néhány alapvető lépésre, amelyek szükségesek ahhoz, hogy ezt a funkciót egy androidos alkalmazásban megvalósítsuk.

Szerint kezdjük!

AndroidManifest.xml

2. lépés: Ellenőrizzük, hogy a készülék támogatja-e a biometrikus hitelesítést

Konkrétan azt fogjuk ellenőrizni, hogy a következő feltételek teljesülnek-e:

  • A készülék Android 6-ot használ.0 vagy újabb
  • A készülék ujjlenyomat-érzékelővel rendelkezik
  • A felhasználó engedélyt adott az alkalmazásnak az ujjlenyomat-érzékelőhöz való hozzáférésre.
  • A felhasználó legalább egy ujjlenyomatot regisztrált a készülékén.

Elkészíthetünk egy külön util osztályt a fenti feltételek teljesülésének ellenőrzésére:

3. lépés: BiometricPrompt párbeszédpanel megjelenítése

Ha a fenti feltételek ellenőrzése megtörtént, ellenőrizhetjük, hogy a készülékben lévő android verzió Android P-e. A fenti feltételek teljesülése esetén a felhasználónak az Android P-t kell használnia. A Biometrikus párbeszédpanel csak az Android P-ben támogatott, nézzük meg először ezt.

Az alábbi kód a BiometricPrompt párbeszédpanel megjelenítésére szolgál:

A BiometricPrompt buildert használva tudjuk:

  • setTitle() – A megjelenítendő cím beállítása (Kötelező)
  • setSubtitle() – A megjelenítendő felirat beállítása (Nem kötelező)
  • setDescription() – A megjelenítendő leírás beállítása(Nem kötelező)
  • setNegativeButton() – A negatív gomb szövegének beállítása(Kötelező). Meg kell adnia egy Executor példányt és egy click listenert is a negatív gombhoz.

Figyelem: A párbeszédpanelen belül használt ikon és hibaüzenet nem testreszabható.

Egy tipikus BiometricPrompt párbeszédpanel

4. lépés: A hitelesítési visszahívás kezelése

A következőkben a BiometricPrompt.AuthenticationCallback segítségével figyelünk a felhasználók hitelesítési eseményeire. Ez 4 metódust tartalmaz:

onAuthenticationSucceeded

Amikor az ujjlenyomat sikeresen egyezik az eszközön regisztrált ujjlenyomatok egyikével, akkor ez a callback aktiválódik. Egy AuthenticationResult objektum kerül átadásra a callbacknek.

onAuthenticationFailed

Ha az ujjlenyomat nem egyezik az eszközön regisztrált ujjlenyomatok egyikével sem, akkor ez a callback aktiválódik.

onAuthenticationError

Ha helyrehozhatatlan hiba lépett fel és a hitelesítési folyamat sikertelenül zárult, akkor ez a callback aktiválódik. A callback egy hibakódot kap a hiba okának azonosítására, a hibaüzenettel együtt. A különböző típusú hibakódok a következők lehetnek:

  • BIOMETRIC_ERROR_LOCKOUT – A művelet törlésre került, mert az API túl sok kísérlet miatt le van tiltva.
  • BIOMETRIC_ERROR_LOCKOUT_PERMANENT – A művelet törlésre került, mert a BIOMETRIC_ERROR_LOCKOUT túl sokszor fordult elő.
  • BIOMETRIC_ERROR_NO_SPACE – A művelet nem fejezhető be, mert nem maradt elég tárhely a művelet befejezéséhez.
  • BIOMETRIC_ERROR_TIMEOUT – Időtúllépés történt, mivel az aktuális kérés túl sokáig futott.
  • BIOMETRIC_ERROR_UNABLE_TO_PROCESS – Az érzékelő nem tudta feldolgozni az aktuális képet.
  • BIOMETRIC_ERROR_USER_CANCELED – A felhasználó törölte a műveletet.
  • BIOMETRIC_ERROR_VENDOR – Ha olyan feltételek állnak fenn, amelyek nem tartoznak a fenti kategóriák egyikébe sem.
  • BIOMETRIC_ERROR_NO_BIOMETRICS – A felhasználó nem rendelkezik az eszközön regisztrált biometrikus adatokkal.
  • BIOMETRIC_ERROR_CANCELED – A művelet törlésre került, mert a biometrikus érzékelő nem elérhető.
  • BIOMETRIC_ERROR_HW_NOT_PRESENT – Az eszköz nem rendelkezik biometrikus érzékelővel.
  • BIOMETRIC_ERROR_HW_UNAVAILABLE – Az eszköz hardvere nem áll rendelkezésre.

onAuthenticationHelp

Ez a módszer akkor hívódik meg, ha a hitelesítési folyamat során nem végzetes hiba történt. A visszahíváskor a hiba okát azonosító segédkódot és egy segédüzenetet kap. A különböző típusú súgó kódok a következők lehetnek:

  • BIOMETRIC_ACQUIRED_IMAGER_DIRTY – A biometrikus kép túl zajos volt az érzékelő feltételezett szennyeződése miatt.
  • BIOMETRIC_ACQUIRED_INSUFFICIENT – A biometrikus kép túl zajos volt a feldolgozáshoz. Ennek számos oka lehet, de általában azért, mert a kép nem volt olvasható.
  • BIOMETRIC_ACQUIRED_PARTIAL – Csak részleges biometrikus képet észleltek.
  • BIOMETRIC_ACQUIRED_TOO_FAST – A biometrikus kép hiányos volt, mert a felhasználó túl gyorsan mozgatta az ujját az érzékelő körül.
  • BIOMETRIC_ACQUIRED_TOO_SLOW – A biometrikus kép nem volt olvasható, mert a felhasználó nem mozgott az érzékelő körül.
Custom Biometric Callback class

Ha Android P készülékkel rendelkezik, akkor ez az!

Ha van Android P készüléke, akkor ez az!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.