Saltar al contenido principal

Usa IA para integrar Auth0

Si usas un asistente de programación con IA como Claude Code, Cursor o GitHub Copilot, puedes añadir la autenticación de Auth0 automáticamente en cuestión de minutos con agent skills.Instala:
Después, pídele a tu asistente de IA:
Tu asistente de IA creará automáticamente tu aplicación de Auth0, obtendrá las credenciales, añadirá la dependencia del SDK Auth0.swift, configurará Auth0.plist, establecerá las URL de callback e implementará los flujos de login y Logout. Documentación completa de agent skills →

Primeros pasos

1

Crear un proyecto nuevo

Cree un nuevo proyecto de iOS o macOS para este inicio rápido.En Xcode:
  1. FileNewProject (o ⌘+Mayús+N)
  2. Seleccione una de estas opciones:
    • Pestaña iOS → plantilla App
    • Pestaña macOS → plantilla App
  3. Configure el proyecto:
    • Product Name: Auth0-Sample
    • Interface: SwiftUI
    • Language: Swift
    • Use Core Data: Desactivado
    • Include Tests: Activado (recomendado)
  4. Elija una ubicación y haga clic en Create
Esto crea una aplicación estándar con soporte para SwiftUI y Swift Package Manager, ideal para integrar Auth0.
2

Agrega el SDK de Auth0

Agrega el SDK de Auth0 a tu proyecto con el gestor de paquetes que prefieras.
En Xcode:
  1. FileAdd Package Dependencies… (o ⌘+Shift+K)
  2. Ingresa la URL del SDK de Auth0:
  3. Add Package → Selecciona el target de tu app → Add Package
3

Configurar Auth0

Cree una nueva aplicación en Auth0 y configure las URL de callback.
  1. Vaya a Auth0 Dashboard
  2. Applications > Create Application > Asígnele un nombre, seleccione Native > Create
  3. En la pestaña Settings, anote su ID de cliente y dominio
  4. Agregue las siguientes URL a Allowed Callback URLs:
  1. Agregue las siguientes URL a Allowed Logout URLs:
  1. Haga clic en Save Changes
4

Configurar las credenciales de la aplicación

Crea Auth0.plist en el directorio del proyecto:
Auth0.plist
Arrastra Auth0.plist a Xcode y asegúrate de que la opción “Add to target” esté seleccionada.
5

Crear el servicio de autenticación

Cree AuthenticationService.swift para gestionar el inicio de sesión, el cierre de sesión y el almacenamiento de tokens.
Use CredentialsManager para almacenar tokens. La clase CredentialsManager almacena las credenciales de forma segura en el Keychain y actualiza automáticamente los tokens de acceso vencidos. Úsela siempre; no almacene tokens en memoria, UserDefaults ni localStorage.
  1. Haga clic derecho en su proyecto → New File…Swift File
  2. Asígnele el nombre AuthenticationService
  3. Reemplace el contenido con:
AuthenticationService.swift
6

Configurar el flujo de autenticación (opcional)

Para mejorar la experiencia del usuario, puede minimizar las alertas del sistema de las siguientes maneras:
  1. Use Universal Links: esto elimina el mensaje ‘¿Abrir en “AppName”?’ que aparece durante la redirección. Nota: la alerta de permiso de ASWebAuthenticationSession seguirá apareciendo.
  2. Use sesiones efímeras: esto elimina todas las alertas de permiso. Nota: esto desactiva el inicio de sesión único (SSO) y las cookies compartidas.
Omita este paso para usar el comportamiento predeterminado con una alerta de permiso. Puede configurarlo más adelante.
8

Ejecuta la aplicación

Presiona ⌘+R en Xcode.
  1. Toca “Iniciar sesión” → Alerta de permisos (si usas la configuración predeterminada) → Toca “Continuar”
  2. Completa el inicio de sesión en el navegador
  3. ¡Verás tu perfil!
Punto de control¡Ya tienes un inicio de sesión con Auth0 totalmente funcional en tu aplicación para iOS o macOS!

Solución de problemas y opciones avanzadas

Errores de compilación: no se encuentra el módulo ‘Auth0’

Soluciones:
  1. Swift Package Manager: Revisa Package Dependencies → Verifica que Auth0.swift figure en la lista
  2. CocoaPods: Asegúrate de abrir el archivo .xcworkspace, no .xcodeproj
  3. Carthage: Verifica que Auth0.xcframework esté agregado en Frameworks, Libraries, and Embedded Content
  4. Limpia y vuelve a compilar: ⌘+Shift+K y luego ⌘+R
  5. Reinicia Xcode si es necesario

La app se cierra: ‘Auth0.plist not found’

Solución:
  1. Verifica que Auth0.plist esté en el navegador del proyecto de Xcode
  2. Selecciona el archivo → Inspector → Asegúrate de que el target de tu app esté marcado
  3. Confirma que tenga las claves ClientId y Domain con tus valores

El navegador se abre, pero nunca regresa a la app

Solución:
  1. Comprueba que las URL de callback en Auth0 Dashboard coincidan exactamente con tu identificador de paquete y la plataforma
  2. Para iOS: las URL deben contener /ios/; para macOS: /macos/
  3. Verifica que el identificador de paquete en Xcode coincida con la configuración de Auth0
  4. Asegúrate de que no haya errores tipográficos en las URL (los más comunes: dos puntos faltantes o formato de dominio incorrecto)
  5. Si usas un dominio personalizado: Verifica que estés usando tu dominio personalizado, no el dominio de Auth0

La alerta de permisos aparece cada vez

Este es el comportamiento de seguridad estándar de iOS/macOS al usar esquemas de URL personalizados. Consulta el Paso 6 para eliminar esta alerta usando Universal Links o Ephemeral Sessions.
Si usas un dominio personalizado, usa ese valor en lugar de tu dominio de Auth0 en todas partes.Ejemplo: Usa login.example.com en lugar de tenant.auth0.comEsto es necesario para que ciertas funciones funcionen correctamente:
  • Actualiza Auth0.plist con tu dominio personalizado
  • Usa el dominio personalizado en las URL de callback/logout
  • Para Universal Links, usa: webcredentials:login.example.com

Preparación para App Store

  • Configura Universal Links para eliminar la alerta de permisos
  • Haz pruebas en varias versiones de la plataforma y tamaños de dispositivo
  • Implementa un manejo de errores adecuado para fallos de red
  • Agrega descripciones de uso de privacidad si usas Keychain con biometría
  • Sigue las directrices de revisión de App Store para los flujos de autenticación

Prácticas recomendadas de seguridad

  • Nunca registres datos de autenticación sensibles en producción
  • Implementa el cumplimiento de App Transport Security (ATS)
  • Usa HTTPS para todas las solicitudes de red
  • NO fijes certificados de la API de Auth0: Auth0 no recomienda esta práctica

Optimización del rendimiento

  • Todas las operaciones asíncronas usan correctamente @MainActor para actualizar la UI
  • Las propiedades @Published usan un manejo de memoria adecuado
  • Las credenciales se almacenan en caché de forma segura en el Keychain para acceso sin conexión
  • El perfil de usuario se obtiene del token de ID (sin ninguna solicitud de red adicional)

Seguridad reforzada de Keychain con biometría

Exige Face ID o Touch ID para acceder a las credenciales almacenadas:
Cuando está habilitado, los usuarios deben autenticarse con biometría antes de que el SDK pueda recuperar las credenciales almacenadas.

Renovación automática de tokens

CredentialsManager renueva automáticamente los tokens de acceso caducados:
Usa este patrón al hacer llamadas a la API que requieran un token de acceso.

Credenciales compartidas entre extensiones de la app

Para widgets, extensiones de la app o tareas en segundo plano que necesiten tokens de acceso:
Requisitos:
  1. Habilita la capacidad App Groups en Xcode para todos los targets
  2. Usa el mismo identificador de grupo de apps en todos los targets
  3. Configura el CredentialsManager compartido en cada target

Comparación de opciones del flujo de autenticación

Recomendaciones:
  • Apps de producción con SSO: Universal Links (mejor UX, compatibilidad con SSO, requiere una cuenta de desarrollador de Apple)
  • Apps de producción sin SSO: Sesiones efímeras (sin alertas, configuración más sencilla)
  • Pruebas/desarrollo: Sesiones efímeras (configuración rápida, UX más limpia)
  • Inicio rápido/prototipado: Opción predeterminada con alertas (sin configuración, puedes migrar más adelante)