Usa la IA para integrar Auth0
Usa la 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.Primero, instala las agent skills de Auth0:Después, pídele a tu asistente de IA:Tu asistente de IA creará automáticamente tu aplicación de Auth0, obtendrá las credenciales, instalará el SDK de Auth0 para Angular y los plugins de Capacitor, configurará el deep linking e implementará flujos de inicio y cierre de sesión con integración con el navegador nativo. Obtén más información sobre Auth0 agent skills.
Primeros pasos
Instala el SDK de Auth0 para Angular y los plugins de Capacitor
Instala el SDK de Auth0 para Angular junto con los complementos Browser y App de Capacitor:
@capacitor/browser- abre la página de Login de Auth0 en el navegador del sistema del dispositivo (SFSafariViewController en iOS, Chrome Custom Tabs en Android)@capacitor/app- gestiona los callbacks de enlaces profundos de Auth0 después de la autenticación
El plugin Browser de Capacitor en iOS usa
SFSafariViewController, que en iOS 11+ no comparte cookies con Safari. Esto significa que el SSO no funcionará en esos dispositivos. Si necesita SSO, use un plugin compatible que utilice ASWebAuthenticationSession.Configura tu aplicación en Auth0
A continuación, debes crear una nueva aplicación en tu tenant de Auth0 y agregar las variables de entorno a tu proyecto.Tienes tres opciones para configurar tu aplicación de Auth0: usar la herramienta Quick Setup (recomendado), ejecutar un comando de CLI o configurar manualmente a través del Dashboard:
- Configuración rápida (recomendada)
- CLI
- Dashboard
Crea una aplicación nativa de Auth0 y copia el archivo de entorno rellenado previamente con los valores de configuración correctos.Después de crear la aplicación, actualiza Allowed Callback URLs y Allowed Logout URLs en la pestaña Settings del Auth0 Dashboard. Sustituye
YOUR_PACKAGE_ID por el appId de capacitor.config.ts (valor predeterminado: io.ionic.starter):Allowed Callback URLs y Allowed Logout URLs:Configura el módulo Auth0
Con el archivo de entorno ya creado en el paso anterior, configure el módulo de Auth0 en su aplicación:La configuración de
src/main.ts
provideAuth0 incluye:useRefreshTokens: true— obligatorio para móviles. Las aplicaciones de Capacitor no pueden usar autenticación silenciosa basada en iframes, por lo que se usan tokens de actualización para renovar las sesiones.useRefreshTokensFallback: false— obligatorio para móviles. Evita que el SDK recurra a la autenticación silenciosa basada en iframes, que no está disponible en aplicaciones nativas.authorizationParams.redirect_uri— usa el esquema de URL personalizado de tu aplicación para redirigirla de nuevo tras la autenticación.
Crear componentes de Login, Logout y perfil
Crear los archivos de componentesAgrega el siguiente código a cada componente:Ahora actualiza el componente App para gestionar los callbacks de Auth0 y la página de inicio para utilizar tus componentes:
- Componente de la aplicación
- Página de inicio
Reemplaza el contenido de
src/app/app.component.ts:src/app/app.component.ts
El callback del evento
appUrlOpen en el componente App está encapsulado en this.ngZone.run(). Esto es necesario porque los callbacks del plugin de Capacitor se ejecutan fuera de la zona de Angular y, sin esto, Angular no detectará los cambios en el estado de autenticación después del inicio de sesión. Consulta Using Angular with Capacitor para obtener más información.Ejecuta tu aplicación
Primero, pruebe en el navegador:Para ejecutarla en un dispositivo o simulador, primero agregue las plataformas nativas:Luego, compila, sincroniza y ejecuta:
Debes añadir las plataformas nativas con
npx cap add antes de poder ejecutarlas. Esto solo debe hacerse una vez por plataforma. Asegúrate de que tu esquema de URL personalizado esté registrado (consulta Uso avanzado más abajo).Punto de controlAhora deberías tener una página de Login de Auth0 totalmente funcional ejecutándose en localhost
Uso avanzado
Uso del enfoque tradicional con NgModule
Uso del enfoque tradicional con NgModule
Si creó su proyecto con
--type=angular (en lugar de --type=angular-standalone) o prefiere usar NgModules, configure el SDK con AuthModule.forRoot:src/app/app.module.ts
Al usar NgModules, inyecte
AuthService mediante el constructor (constructor(public auth: AuthService)) en lugar de inject(). En las plantillas, use *ngIf="auth.user$ | async as user" en lugar de la sintaxis de control de flujo @if. Los componentes deben declararse en el módulo en lugar de marcarse como standalone: true.Configuración del esquema de URL personalizado
Configuración del esquema de URL personalizado
Para probar la autenticación en un dispositivo real, registre su esquema de URL personalizado para cada plataforma.Reemplace Reemplace O, para Android:
iOS
Registre su esquema de URL personalizado enios/App/App/Info.plist:YOUR_PACKAGE_ID por su appId de capacitor.config.ts. Para obtener más información, consulte Defining a Custom URL Scheme.Android
Agregue un filtro de intents aandroid/app/src/main/AndroidManifest.xml dentro de la etiqueta <activity>:YOUR_PACKAGE_ID por su appId de capacitor.config.ts. Para obtener más información, consulte Create Deep Links to App Content.Compilar y ejecutar en un dispositivo
Protección de rutas con AuthGuard
Protección de rutas con AuthGuard
Usa el guard funcional para proteger las rutas que requieren autenticación:Cuando un usuario no autenticado navega a una ruta protegida,
src/app/app.routes.ts
authGuardFn lo redirige automáticamente a la página de inicio de sesión de Auth0.Llamadas a APIs protegidas
Llamadas a APIs protegidas
Configura el interceptor HTTP para adjuntar automáticamente tokens de acceso a las llamadas a la API:Luego, haz llamadas a la API con
src/main.ts
HttpClient de Angular; el interceptor adjunta automáticamente el Bearer Token:src/app/api.service.ts
Problemas comunes y soluciones
Problemas comunes y soluciones
Error de discrepancia en la URL de callback
Solución: Verifica que la URL de callback en tu Auth0 Dashboard coincida exactamente con la URL construida en tu aplicación. Asegúrate de queYOUR_PACKAGE_ID coincida con el campo appId de tu capacitor.config.ts.La pantalla no se actualiza después del login
Solución: Asegúrate de que el callback del eventoappUrlOpen esté envuelto en this.ngZone.run(). De lo contrario, Angular no detectará los cambios de estado de handleRedirectCallback. Consulta Uso de Angular con Capacitor.Error “PKCE not allowed”
Solución:- Ve a Auth0 Dashboard > Applications > Your Application
- Cambia Application Type a Native
- Establece Token Endpoint Authentication Method en
None - Guarda los cambios y vuelve a intentarlo
SSO no funciona en iOS
El plugin Browser de Capacitor usaSFSafariViewController, que no comparte cookies con Safari en iOS 11+. Si necesitas SSO, usa un plugin compatible que utilice ASWebAuthenticationSession.Login funciona, pero el usuario sigue sin autenticarse después de reiniciar la aplicación
HabilitacacheLocation: 'localstorage' en la configuración de provideAuth0 para conservar los tokens entre reinicios de la aplicación. Ten en cuenta las implicaciones de seguridad y las limitaciones de almacenamiento de Capacitor.Un Observable nunca se ejecuta
Todos los métodos deAuthService devuelven Observables fríos. Debes llamar a .subscribe() para que se ejecuten. Si parece que loginWithRedirect() o logout() no hacen nada, verifica que .subscribe() esté encadenado al final.Próximos pasos
- Aplicación de ejemplo — Una aplicación de ejemplo completa de Ionic con Angular integrada con Auth0
- Documentación del SDK de Auth0 para Angular — Referencia completa del SDK y ejemplos
- Auth0 Dashboard — Configura y administra tu inquilino de Auth0 y tus aplicaciones
- Auth0 Marketplace — Descubre integraciones que puedes habilitar para ampliar la funcionalidad de Auth0