Cómo utilizar Touch ID para autenticar a los usuarios en aplicaciones iOS

Índice de Contenido
  1. La magia de Touch ID para autenticación en aplicaciones iOS
    1. ¿Qué es Touch ID?
    2. ¿Qué es Touch ID?
    3. Uso de Touch ID como mecanismo de autenticación
    4. Integración de la Autenticación Local
    5. ¿Qué sigue?

La magia de Touch ID para autenticación en aplicaciones iOS

¿Qué es Touch ID?

Touch ID es un lector de huellas dactilares que facilita el inicio de sesión en iOS y la compra de contenido en la tienda de iTunes, pero también tiene muchas otras posibilidades. Afortunadamente, Apple ha dado a los desarrolladores la capacidad de integrar Touch ID en sus aplicaciones utilizando la API de Autenticación Local en el SDK de iOS 8. En este tutorial, te mostraremos cómo utilizar la Autenticación Local para proporcionar tu propio sistema de inicio de sesión que solicita al usuario que inicie sesión con su huella dactilar.

¿Qué es Touch ID?

Touch ID es un lector de huellas dactilares biométrico que reemplaza el botón de inicio tradicional en los dispositivos iPhone 5s. Su objetivo en iOS 7 es desbloquear el dispositivo mediante el escaneo de huellas dactilares y autorizar compras en iTunes, todo sin necesidad de introducir un código de acceso manual.

Todos los datos de huellas dactilares se almacenan de forma segura en una parte del procesador A7 llamada "Enclave Seguro" y ninguna aplicación, ni siquiera iOS, tiene acceso a estos datos. El Enclave Seguro protege todos estos datos, incluso si el sistema operativo o el núcleo se ven comprometidos.

El Enclave Seguro es responsable de todas las tareas de procesamiento de criptografía en iOS, y también maneja secretos del dispositivo, secretos del código de acceso y todos los aspectos de Touch ID (incluido el bloqueo de Touch ID cuando detecta eventos de seguridad potencialmente comprometedores).

Un evento de seguridad puede ser cualquiera de los siguientes:

  • El usuario escanea repetidamente un dedo no reconocido o un usuario no autorizado escanea un dedo
  • Cuando el dispositivo se reinicia
  • Varios días de inactividad y no uso de Touch ID
  • El dispositivo ha sido bloqueado de forma remota

En todos los escenarios anteriores, el sensor de Touch ID será bloqueado y deberá introducirse un código de acceso manual para volver a habilitar Touch ID.

Visual Studio 2015: Descubre las nuevas características de esta versión

Uso de Touch ID como mecanismo de autenticación

Hay dos formas de utilizar Touch ID como mecanismo de autenticación en tus aplicaciones iOS 8. Veamos las dos formas.

Touch ID a través de Autenticación Local

Las API de Autenticación Local en iOS 8 son una API que devuelve un valor BOOL para indicar si el escaneo de huella dactilar fue exitoso o no. Si hubo un error, el código de error que se devuelve te indicará qué sucedió.

Existen algunas advertencias al utilizar la Autenticación Local:

  • La aplicación debe estar en primer plano (esto no funciona con procesos en segundo plano)
  • Si estás utilizando el método directo de Autenticación Local, serás responsable de manejar todos los errores y responder adecuadamente con tu interfaz de usuario para garantizar que exista un método alternativo para iniciar sesión en tus aplicaciones.

Si ya tienes un sistema de inicio de sesión implementado que no utiliza Keychain Access, es posible que esta sea la mejor opción debido a su facilidad de implementación y sencillez.

Touch ID a través de Keychain Access

Si utilizas Keychain Access en tus aplicaciones, te alegrará saber que Keychain Access incluye una nueva integración con Touch ID en iOS 8. Utilizando las mismas API de Autenticación Local, Keychain Access maneja automáticamente las implementaciones de códigos de acceso de respaldo utilizando el código de acceso del dispositivo para que no tengas que preocuparte por los detalles de implementación.

Se pueden seleccionar ciertos elementos de Keychain para utilizar Touch ID y desbloquear el elemento cuando se solicite mediante el código a través de la nueva característica de Listas de Control de Acceso en Keychain de iOS 8. Si Touch ID se ha bloqueado, se solicitará al usuario que introduzca el código de acceso del dispositivo sin interrupción alguna.

Las novedades de Microsoft Build 2016: Actualización Aniversario

Sin embargo, hay algunas advertencias que pueden hacer que Keychain Access no sea la mejor opción para ti:

  • Los elementos de Keychain que utilizan el atributo de Touch ID para desbloquearlos no se sincronizarán a través de iCloud Keychain
  • Si especificas consultas de elementos de Keychain demasiado amplias, pueden aparecer múltiples cuadros de diálogo de Touch ID, lo que puede causar confusión al usuario y podrías tener que reescribir algunas consultas de Keychain para que sean más específicas.

Integración de la Autenticación Local

Cómo utilizar Touch ID para autenticar a los usuarios en aplicaciones iOS - Desarrollo | Imagen 1 Newsmatic

En este tutorial, nos centraremos en utilizar el método directo de Autenticación Local, ya que creemos que será la opción más popular entre los desarrolladores que ya implementan un sistema de autenticación en sus aplicaciones.

Para configurar las cosas, necesitamos crear un objeto LAContext que se encargará de solicitar al usuario que se autentique utilizando Touch ID.

LAContext *localAuthenticationContext = [[LAContext alloc] init];
__autoreleasing NSError *authenticationError;
NSString *localizedReasonString = NSLocalizedString(@"Autentica e inicia sesión en tu cuenta.", @"Texto para solicitar al usuario la razón por la que se utiliza Touch ID.");

Arriba, hemos creado el objeto LAContext, creado un objeto NSError nulo que se autoliberará que pasaremos por referencia al método -canEvaluatePolicy:error: a continuación para determinar si hubo un error.

Consejos para convertirte en un mejor programador y mejorar tus oportunidades de carrera

A continuación, creamos la cadena de texto localizada tan importante. Todas las operaciones de Touch ID requieren esta cadena de texto (y debería estar localizada en cada idioma que admite tu aplicación). Esta cadena de texto le indica al usuario por qué solicitas su huella dactilar. Si pasas una cadena de texto vacía o nula al método -evaluatePolicy:localizedReason:reply:, recibirás un error.

([localAuthenticationContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authenticationError]) {
[localAuthenticationContext
evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:localizedReasonString
reply:^(BOOL success, NSError *error) {
if (success) {
// El escaneo de Touch ID fue exitoso, procesa el inicio de sesión
} else {
// El escaneo de Touch ID falló, revisa la propiedad "code" del objeto "error"
}
}];
} else {
// Error utilizando Touch ID: es probable que no sea un dispositivo compatible con Touch ID
}

Arriba, verificamos si el dispositivo puede utilizar Touch ID llamando al método -canEvaluatePolicy:error:. Si obtenemos un valor YES aquí, entonces llamamos a -evaluatePolicy:localizedReason:reply: en el objeto LAContext, pasando nuestra cadena de texto localizada. Lo que obtenemos en el bloque de respuesta es un BOOL y un objeto NSError. El BOOL determinará el éxito del escaneo de huella dactilar. Si el BOOL es YES, puedes estar seguro de que se escaneó una huella dactilar registrada y ahora puedes procesar el flujo de inicio de sesión para el usuario. Si obtienes un NO, deberás verificar la propiedad "code" del objeto "error" para saber qué salió mal.

En cuanto llames a -evaluatePolicy:localizedReason:reply:, verás el cuadro de diálogo de Touch ID solicitando al usuario que escanee su huella dactilar (Figura A).

Algunos posibles códigos de error que debes comprobar e implementar flujos de interfaz de usuario para son:

  • kLAErrorAuthenticationFailed
    • Esto ocurre cuando el escaneo de huella dactilar no fue exitoso (se escaneó el dedo incorrecto, etc.)
  • kLAErrorUserFallback
    • Si Touch ID está bloqueado o si hay demasiados escaneos fallidos, entonces debes utilizar el flujo de respaldo y solicitar al usuario que se autentique manualmente
    • También puede ocurrir si el usuario toca el botón "Introducir contraseña" en el cuadro de diálogo de Touch ID.
  • kLAErrorUserCancel
    • Ocurre cuando el usuario toca el botón "Cancelar" en el cuadro de diálogo de Touch ID.

¿Qué sigue?

Antes de utilizar cualquiera de las API de Autenticación Local, te recomendamos encarecidamente que consultes la sesión 711 de la WWDC 2014. Contiene toda la información que necesitas saber sobre Touch ID y cómo empezar con la implementación de Keychain Access y el método directo de Autenticación Local, así como algunos consejos útiles sobre cómo manejar casos especiales.

Informe: El 60% de las apps se construyen fuera de TI

¿Has comenzado a trabajar en la implementación de Touch ID en tus aplicaciones? Si es así, ¿qué método elegiste utilizar (Autenticación Local directa vs. Keychain Access)? ¿Tienes algún consejo o truco para otros desarrolladores? Únete a la sección de discusión a continuación.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Desarrollo, allí encontraras muchos artículos similares a Cómo utilizar Touch ID para autenticar a los usuarios en aplicaciones iOS , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.