Implementación de Autenticación PassKeys en Aplicaciones iOS
Clase 25 de 31 • Curso de Integración Nativa iOS
Resumen
¿Cómo implementar autenticación con Passkeys en tu aplicación?
La autenticación con Passkeys constituye una forma robusta y moderna de asegurar la identidad del usuario mediante credenciales criptográficas públicas y privadas, similar al Face ID. En este artículo aprenderás cómo implementar este tipo de autenticación en tu aplicación usando Authentication Services.
¿Qué necesitas antes de comenzar?
Es vital que prepares adecuadamente tu entorno de desarrollo antes de implementar la autenticación con Passkeys:
- Archivos esenciales: Asegúrate de tener en el módulo correspondiente de tu proyecto dos archivos: uno llamado
outdelegate
y otro llamadodemo passkeys outview
. - Servicios de autenticación: Verifica que los servicios de Authentication Services estén correctamente inicializados para conectar tu aplicación con estos servicios.
¿Cómo se inicializa el delegado para la autenticación?
La clase outdelegate
es clave para manejar la autenticación. Esta necesita implementar dos interfaces para recibir callbacks sobre el éxito o los errores que puedan ocurrir durante el proceso de autenticación.
class OutDelegate: NSObject, ASAuthorizationControllerDelegate {
private var completion: (Result<Void, Error>) -> Void
init(completion: @escaping (Result<Void, Error>) -> Void) {
self.completion = completion
}
// Maneja la autenticación exitosa
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
// Verificar el tipo de credencial
if let credential = authorization.credential as? ASAuthorizationPlatformPublicKeyCredentialAssertion {
print("Autenticación exitosa")
completion(.success(()))
}
}
// Maneja los errores
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Error en la autenticación: \(error.localizedDescription)")
completion(.failure(error))
}
}
¿Cómo se configura la vista para la autenticación?
En el archivo demo passkeys outview
, los elementos visuales muestran y manejan el estado de la autenticación. Usa SwiftUI
para actualizar dinámicamente el estado.
struct DemoPasskeysOutview: View {
@State private var authenticationStatus = "No autenticado"
private var outDelegate: OutDelegate?
var body: some View {
VStack {
Text(authenticationStatus)
Button(action: authenticateUser) {
Text("Iniciar sesión con Passkey")
}
}
}
// Función para autenticar al usuario
private func authenticateUser() {
let provider = ASAuthorizationPlatformPublicKeyCredentialProvider(relyingPartyIdentifier: "tu.identificador.unico")
let request = provider.createCredentialAssertionRequest(challenge: "demo challenge".data(using: .utf8)!)
let authController = ASAuthorizationController(authorizationRequests: [request])
let delegate = OutDelegate { result in
switch result {
case .success:
authenticationStatus = "Autenticado correctamente"
case .failure:
authenticationStatus = "Error al autenticar"
}
}
authController.delegate = delegate
outDelegate = delegate // Mantiene el delegate en memoria
authController.performRequests()
}
}
¿Cómo gestionar el controlador de autorización?
Es esencial configurar un controlador de autorización para gestionar las solicitudes de autenticación:
- Crear proveedor de credenciales: Usa un identificador único para tu aplicación, que puedes encontrar en tu
bundle identifier
. - Generar solicitud: Utiliza el proveedor para crear una solicitud mediante una función que acepte un desafío (en este caso, un simple string).
- Configurar controlador: Usa esta solicitud para inicializar el controlador de autorización y gestionar los resultados con el delegado.
¿Cómo probar la funcionalidad en un dispositivo físico?
Aunque ejecutar la aplicación en un simulador no ofrece la autenticación con Passkeys, realizar la prueba en un dispositivo físico te permitirá aprovechar estas funciones. Observa cómo el cambio del estado en la aplicación evidencia una autenticación exitosa al hacer uso de Passkeys y Face ID en tu dispositivo.
Implementar Passkeys es una inversión en la seguridad de tu aplicación que, a largo plazo, proporciona un nivel superior de protección, al tiempo que ofrece una experiencia de usuario fluida y moderna. ¡Anímate a integrar esta tecnología y a seguir aprendiendo sobre nuevas tendencias en desarrollo!