5 pasos para implementar la autenticación biométrica en Android

, Author

Recientemente tuve la oportunidad de trabajar con la nueva función BiometricPrompt API lanzada por Google este año. Mientras que el soporte de autenticación de huellas dactilares ha estado disponible desde Android 6.0, el nuevo BiometricPrompt promete más precisión y un nivel consistente de seguridad a través de todos los dispositivos que ejecutan nuestra aplicación.

Habiendo implementado la autenticación biométrica en una aplicación androide recientemente, pensé en destacar algunos de los pasos básicos necesarios para implementar esta característica en una aplicación androide.

¡Así que vamos a empezar!

AndroidManifest.xml

Paso 2: Comprobar si el dispositivo soporta la autenticación biométrica

Específicamente, vamos a comprobar si se cumplen las siguientes condiciones:

  • El dispositivo está ejecutando Android 6.0 o superior
  • El dispositivo cuenta con un sensor de huellas dactilares
  • El usuario ha dado permiso a tu app para acceder al sensor de huellas dactilares.
  • El usuario ha registrado al menos una huella dactilar en su dispositivo.

Podemos crear una clase util independiente para comprobar si se cumplen las condiciones anteriores:

Paso 3: Mostrar el diálogo BiometricPrompt

Una vez comprobadas las condiciones anteriores, podemos comprobar si la versión de android en el dispositivo es Android P. El diálogo biométrico sólo es compatible con Android P. Vamos a echar un vistazo a eso primero.

El siguiente código es para mostrar un diálogo BiometricPrompt:

Usando el constructor BiometricPrompt podemos:

  • setTitle() – Establecer el título a mostrar (Obligatorio)
  • setSubtitle() – Establecer el subtítulo a mostrar (Opcional)
  • setDescription() – Establecer la descripción a mostrar(Opcional)
  • setNegativeButton() – Establecer el texto del botón negativo(Obligatorio). También debe proporcionar una instancia de Ejecutor y un oyente de clic para el botón negativo.

Nota: No se puede personalizar el icono o el mensaje de error que se utilizan dentro del diálogo.

Un típico diálogo BiometricPrompt

Paso 4: Manejar la autenticación Callback

A continuación utilizamos el BiometricPrompt.AuthenticationCallback para escuchar los eventos de autenticación de los usuarios. Incluye 4 métodos:

onAuthenticationSucceeded

Cuando la huella dactilar se ha emparejado con éxito con una de las huellas dactilares registradas en el dispositivo, entonces este callback se activará. Se pasará un objeto AuthenticationResult a la llamada de retorno.

onAuthenticationFailed

Cuando la huella digital no coincida con ninguna de las huellas digitales registradas en el dispositivo, se activará esta llamada de retorno.

onAuthenticationError

Cuando se haya producido un error irrecuperable y el proceso de autenticación haya finalizado sin éxito, se activará esta llamada de retorno. La devolución de llamada se proporciona con un código de error para identificar la causa del error, junto con el mensaje de error. Los diferentes tipos de códigos de error que pueden ocurrir son:

  • BIOMETRIC_ERROR_LOCKOUT – La operación se canceló porque la API está bloqueada debido a demasiados intentos.
  • BIOMETRIC_ERROR_LOCKOUT_PERMANENT – La operación se canceló porque BIOMETRIC_ERROR_LOCKOUT ocurrió demasiadas veces.
  • BIOMETRIC_ERROR_NO_SPACE – La operación no se puede completar porque no hay suficiente almacenamiento restante para completar la operación.
  • BIOMETRIC_ERROR_TIMEOUT – El tiempo de espera se produce porque la solicitud actual se ha ejecutado demasiado tiempo.
  • BIOMETRIC_ERROR_UNABLE_TO_PROCESS – El sensor no pudo procesar la imagen actual.
  • BIOMETRIC_ERROR_USER_CANCELED – El usuario canceló la operación.
  • BIOMETRIC_ERROR_VENDOR – Si hay condiciones que no entran en una de las categorías anteriores.
  • BIOMETRIC_ERROR_NO_BIOMETRICS – El usuario no tiene ningún dato biométrico registrado en el dispositivo.
  • BIOMETRIC_ERROR_CANCELED – La operación se canceló porque el sensor biométrico no está disponible.
  • BIOMETRIC_ERROR_HW_NOT_PRESENT – El dispositivo no tiene un sensor biométrico.
  • BIOMETRIC_ERROR_HW_UNAVAILABLE – El hardware del dispositivo no está disponible.

onAuthenticationHelp

Este método se llama cuando se ha producido un error no fatal durante el proceso de autenticación. El callback recibirá un código de ayuda para identificar la causa del error, junto con un mensaje de ayuda. Los diferentes tipos de códigos de ayuda que pueden ocurrir son:

  • BIOMETRIC_ACQUIRED_IMAGER_DIRTY – La imagen biométrica tenía demasiado ruido debido a una supuesta suciedad en el sensor.
  • BIOMETRIC_ACQUIRED_INSUFFICIENT – La imagen biométrica tenía demasiado ruido para ser procesada. Esto puede deberse a diversas razones, pero generalmente se debe a que la imagen no era legible.
  • BIOMETRIC_ACQUIRED_PARTIAL – Sólo se detectó una imagen biométrica parcial.
  • BIOMETRIC_ACQUIRED_TO_FAST – La imagen biométrica estaba incompleta porque el usuario movió su dedo alrededor del sensor demasiado rápido.
  • BIOMETRIC_ACQUIRED_TOO_SLOW – La imagen biométrica era ilegible debido a la falta de movimiento del usuario alrededor del sensor.
Custom Biometric Callback class

Si tienes un dispositivo Android P, ¡ya está!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.