DESARROLLADOR

Integre Touch ID utilizando la API de autenticación nativa en el SDK de iOS 8

Touch ID es el lector de huellas dactilares que facilita iniciar sesión en iOS y comprar contenido de iTunes Store, pero tiene muchas posibilidades. Afortunadamente, Apple permite a los desarrolladores integrar Touch ID en sus aplicaciones utilizando la API de autenticación nativa en el SDK de iOS 8. En este tutorial, le mostraremos cómo usar la autenticación local para proporcionar su propio sistema de inicio de sesión que solicite a los usuarios que inicien sesión con sus huellas digitales.

La esencia de Touch ID

Touch ID es un lector biométrico de huellas digitales que reemplaza el botón de inicio tradicional en los dispositivos iPhone 5s. Su propósito en iOS 7 es escanear una huella digital para desbloquear el dispositivo, así como autorizar compras de iTunes, todo sin ingresar un código de acceso manual.

Todos los datos de las huellas dactilares se almacenan de forma segura en una sección del procesador A7 llamada «Enclave seguro», y las aplicaciones o incluso el propio iOS no pueden utilizar los datos de las huellas dactilares. Protege todos estos datos incluso si el sistema operativo o el kernel están comprometidos.

Secure Enclave maneja todas las tareas de procesamiento criptográfico en iOS, así como los secretos de dispositivos, secretos de contraseñas y todos los aspectos de Touch ID (incluido el bloqueo de Touch ID cuando se detecta un evento de seguridad potencialmente comprometido).

Un evento de seguridad es 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 sin uso de Touch ID
  • El dispositivo se ha bloqueado de forma remota

En todos los casos anteriores, el sensor Touch ID se bloqueará y el código de acceso debe ingresarse manualmente para volver a habilitar Touch ID.

LEER  Desarrolladores: estos lanzamientos fallidos de software cuestan miles de millones a las empresas

Usa Touch ID como mecanismo de autenticación

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

Touch ID con autenticación local

La API de autenticación nativa en iOS 8 es una API que devuelve un valor BOOL para indicar el éxito o el fracaso de un escaneo de huellas dactilares. Si hay un error, el código de error devuelto le dirá qué sucedió.

Hay algunas advertencias sobre el uso de la autenticación local:

  • La aplicación debe estar en primer plano (esto no se aplica a los procesos en segundo plano)
  • Si usa el método de autenticación local directa, usted es responsable de manejar todos los errores y responder correctamente a su UI/UX para garantizar que haya otra forma de iniciar sesión en su aplicación.

Si ya tiene un sistema de inicio de sesión que no utiliza el acceso de llavero, esta es probablemente la mejor opción, ya que es fácil de implementar y sencillo.

Touch ID a través del acceso al llavero

Si está utilizando Acceso a Llaveros en sus aplicaciones, le alegrará saber que Acceso a Llaveros incluye una nueva integración de Touch ID en iOS 8. Al usar la misma API de autenticación nativa, Acceso a Llaveros maneja automáticamente la implementación de la contraseña de respaldo usando la contraseña del usuario del dispositivo, por lo que no tiene que preocuparse por los detalles de implementación.

Mediante el uso de la nueva función Lista de control de acceso (ACL) en el llavero de iOS 8, se pueden seleccionar ciertos elementos del llavero para desbloquear elementos con Touch ID cuando se solicita en el código. Si Touch ID está bloqueado, se le pedirá al usuario que ingrese el código de acceso del dispositivo para continuar sin interrumpir ninguna aplicación.

Sin embargo, aquí hay algunas advertencias que podrían impedir que Acceso a Llaveros sea la mejor opción para usted:

  • Los elementos del llavero desbloqueados con la propiedad Touch ID no se sincronizarán a través del llavero de iCloud
  • Si especifica una consulta de elemento de llavero que es demasiado amplia, puede causar que varios cuadros de diálogo de Touch ID confundan al usuario, lo que significa que es posible que deba volver a escribir algunas consultas de llavero para que sean más específicas.

Autenticación local integrada

localauthenticationfigurea

En este enfoque, queremos centrarnos en utilizar el método de autenticación nativo directo, ya que creemos que será la opción más popular entre los desarrolladores que ya implementaron un sistema de autenticación en sus aplicaciones.

Para configurar esto, necesitamos crear un objeto LAContext que manejará la tarea de requerir que el usuario se autentique con Touch ID.

LAContext *localAuthenticationContext = [[LAContext alloc] en el interior];
__autoreleasing NSError *authenticationError;
NSString *localizedReasonString = NSLocalizedString(@»Autentíquese e inicie sesión en su cuenta.», @»La cadena le pregunta al usuario por qué usamos Touch ID»);

Arriba, creamos el objeto LAContext, creando un objeto NSError autoliberado nulo que se pasará por referencia al método -canEvaluatePolicy:error: a continuación para determinar si ocurrió un error.

A continuación, creamos las cadenas de motivos localizadas más importantes. Esta cadena es necesaria para todas las acciones de Touch ID (y debe estar localizada para cada idioma compatible con su aplicación). Esta cadena le dice al usuario por qué está solicitando su huella digital. Si pasa una cadena vacía o nula al método -evaluatePolicy:localizedReason:reply: a continuación, obtendrá un error.

([localAuthenticationContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authenticationError]) {
[localAuthenticationContext
evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:localizedReasonString
reply:^(BOOL success, NSError *error) {
if (success) {
//Touch ID was a success, process login
} else {
//Touch ID failed, check the code property on the error object
}
}];
} más {
//Error al usar Touch ID; lo más probable es que no sea un dispositivo compatible con TouchID
}

Arriba, verificamos si el dispositivo puede usar Touch ID llamando al método -canEvaluatePolicy:error:. Si obtenemos un SÍ aquí, llamamos a -evaluatePolicy:localizedReason:reply: en el objeto LAContext, pasando nuestra cadena de razón localizada. Lo que obtenemos en el bloque de respuesta es un objeto BOOL y NSError. BOOL determinará si el escaneo del dedo fue exitoso. Si BOOL es SÍ, entonces puede estar seguro de que la huella digital registrada se ha escaneado y ahora puede manejar el flujo de inicio de sesión del usuario. Si obtiene un NO, debe verificar la propiedad del código en el objeto de error para averiguar cuál es el problema.

Cada vez que llame a -evaluatePolicy:localizedReason:reply:, verá la vista de alerta de Touch ID que le pedirá al usuario que escanee su huella digital (Figura A).

Algunos posibles códigos de error que debe verificar e implementar su proceso UI/UX son:

  • kLAErrorAuthenticationFailed
    • Esto sucede cada vez que el escaneo del dedo no tiene éxito (se escanea el dedo equivocado, etc.)
  • kLAErrorUserRetroceso
    • Si Touch ID está bloqueado, o si fallan demasiados escaneos, entonces debe usar un proceso alternativo y pedirle al usuario que realice una verificación manual.
    • También puede suceder que el usuario toque el botón «Ingresar código de acceso» en la vista de alerta de Touch ID.
  • kLAErrorUsuarioCancelar
    • Ocurre cuando el usuario presiona el botón Cancelar en la vista de alerta de Touch ID.

que sigue

Antes de usar cualquiera de las API de autenticación nativas, le recomendamos enfáticamente que revise la Sesión 711 de WWDC en WWDC ’14. Contiene todo lo que necesita saber sobre Touch ID y cómo comenzar con la implementación de Acceso a Llaveros y el método de autenticación local directa, así como algunos consejos útiles sobre cómo manejar casos extremos.

¿Estás comenzando a implementar Touch ID en tu aplicación? Si es así, elige qué método usar (autenticación local directa frente a acceso a llavero). ¿Algún consejo o truco para otros desarrolladores? Únase a la sección de discusión a continuación.

LEER  Producto destacado: herramientas de ayuda y documentación manual

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba