Implementación de Autenticación Local con Face ID en iOS

Clase 24 de 31Curso de Integración Nativa iOS

Resumen

¿Cómo integrar Face ID en tu aplicación iOS para autenticación local?

La autenticación local, especialmente mediante biometría como Face ID, proporciona una capa de seguridad avanzada para las aplicaciones iOS. La implementación de esta tecnología es esencial para asegurar información sensible y garantizar la experiencia del usuario. En este recorrido, aprenderás a integrar Face ID en una aplicación usando Swift, brindando una manera segura y eficiente de autenticar usuarios.

¿Cómo configurar la interfaz de usuario que utilice Face ID?

Para comenzar, es crucial establecer una interfaz simple pero efectiva. Nuestra interfaz incluirá un texto indicativo del estado de la autenticación y un botón para activar Face ID.

  1. Declaración de Variables de Estado:

    • Declaramos una variable authenticationStatus para mostrar, por defecto, el estado "no autenticado".
    • Creamos una variable booleana isAuthenticated para reflejar si el usuario ha sido autenticado, inicializándola como false.
  2. Diseño de la Interfaz:

    • Utilizamos un VStack con un espacio de 20 unidades.
    • Añadimos un texto que indica el estado de la autenticación con propiedades de fuente y espacio como padding.
  3. Botón para Autenticar:

    • Establecemos un botón cuyo texto es "autenticar con Face ID" con una acción asociada a una función authenticateUser.
    • Ajustamos su fontWeight para negritas y definimos colores condicionales:
      • Si isAuthenticated es true, el botón será verde, de lo contrario, azul.
    • Textos en blanco y esquinas redondeadas (cornerRadius) para mejorar la estética.
@State private var authenticationStatus = "No autenticado"
@State private var isAuthenticated = false

VStack(spacing: 20) {
    Text(authenticationStatus)
        .font(.title)
        .padding()

    Button(action: authenticateUser) {
        Text("Autenticar con Face ID")
            .fontWeight(.bold)
            .foregroundColor(.white)
            .padding()
            .background(isAuthenticated ? Color.green : Color.blue)
            .cornerRadius(10)
    }
}

¿Cómo implementar la lógica de autenticación con Face ID?

Para otorgar funcionalidad a nuestro botón, debemos implementar la autenticación mediante Face ID, empezando por verificar si el dispositivo la soporta.

  1. Inicialización del Contexto:

    • Creamos un objeto LAContext para manejar las autenticaciones biométricas.
    • Declaramos una variable de tipo error para capturar errores de autenticación (NSError).
  2. Verificación de Capacidades del Dispositivo:

    • Usamos canEvaluatePolicy para comprobar si se puede usar Face ID. Si no es posible, informamos al usuario que el dispositivo no es compatible.
  3. Procedimiento de Autenticación:

    • Si es posible autenticar, solicitamos la autenticación mostrando un mensaje predefinido.
    • Integramos lógica para procesar el resultado si es exitoso o no:
      • Éxito: Actualizar authenticationStatus a "autenticado con Face ID".
      • Fallo: La variable authenticationStatus se convierte en "no autenticado con Face ID".
func authenticateUser() {
    let context = LAContext()
    var error: NSError?

    if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
        let reason = "Autentícate para acceder a funciones seguras"
        context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, authenticationError in
            DispatchQueue.main.async {
                if success {
                    self.authenticationStatus = "Autenticado con Face ID"
                    self.isAuthenticated = true
                } else {
                    self.authenticationStatus = "No autenticado con Face ID"
                    self.isAuthenticated = false
                }
            }
        }
    } else {
        authenticationStatus = "No se puede autenticar con Face ID"
        isAuthenticated = false
    }
}

¿Cómo probar Face ID en un dispositivo físico?

Probar la autenticación biométrica en un simulador puede ser limitado. Es recomendable ejecutar la aplicación en un dispositivo iOS físico para asegurar la funcionalidad completa, dado que el simulador no imita correctamente todas las capacidades de biometría.

Recomendaciones para una implementación exitosa

  1. Seguridad ante todo: Siempre asegúrate de manejar con cuidado los errores de autenticación, dando información clara al usuario sin comprometer detalles sensibles.

  2. Pruebas rigurosas: Ejecuta pruebas en diferentes dispositivos para abarcar diversas configuraciones de hardware y sistema operativo que puedan afectar el reconocimiento facial.

  3. Experiencia del usuario: Proporciona un flujo intuitivo en la interfaz para que al usuario le sea fácil entender cuándo y por qué es necesario el uso de Face ID.

Al integrar Face ID, das un paso adelantado en la protección y experiencia del usuario, construyendo aplicaciones no solo funcionales sino también seguras. ¡Sigue explorando y mejorando tus conocimientos en desarrollo iOS!