Autenticación con Angular - Protegiendo tu aplicación con JWT, Guards y buenas prácticas

By: Leidy Santos

Tecnología


blog/ Autenticación con Angular - Protegiendo tu aplicación con JWT, Guards y buenas prácticas
01 diciembre 2022


Autenticación con Angular: Protegiendo tu aplicación con JWT, Guards y buenas prácticas


La autenticación es una pieza clave en la seguridad de nuestras aplicaciones web. En este blog, aprenderás cómo implementar autenticación en Angular de manera segura y estructurada.


¿Qué es la autenticación?


autenticacion autorizacion


Autenticación es el proceso de verificar la identidad de un usuario, asegurando que alguien es quien dice ser.
Autorización es el paso siguiente: decidir qué recursos o acciones están permitidos para ese usuario.

¿Por qué es importante en Angular?

  • Angular es un framework potente para frontend, pero no está completo sin un sistema de autenticación robusto.
  • Nos permite proteger rutas, controlar accesos a recursos privados y mantener segura la información del usuario.


Tipos de autenticación


autenticacion angular


Autenticación basada en formularios:

  • El usuario ingresa sus credenciales en un formulario.
  • Si son válidas, el servidor genera un token (como JWT) que usaremos después.

Autenticación basada en tokens (JWT):

  • JWT es un estándar para intercambiar información segura entre partes.
  • El servidor genera el token después del login y lo devuelve al cliente.
  • Se almacena en localStorage o sessionStorage y se envía en cada solicitud HTTP subsecuente.

OAuth2 y OpenID Connect:

  • OAuth2 permite acceder a recursos sin manejar credenciales directamente.
  • OpenID Connect es una capa sobre OAuth2 que facilita la autenticación mediante proveedores de identidad como Google o Facebook.


Estructura del Proyecto


Para integrar autenticación en un proyecto Angular, necesitas:

  1. Crear un AuthService que maneje login, logout y el manejo del token.
  2. Configurar protección de rutas con guards.
  3. Usar un interceptor HTTP para enviar automáticamente el token en cada request.

Archivos clave:

  • auth.service.ts: gestión de tokens y login/logout.
  • app-routing.module.ts: definición de rutas protegidas.
  • app.component.ts: estado global de autenticación.


Flujo de autenticación básico


  • Login: El usuario envía sus credenciales.
  • Backend: Las valida y genera un JWT.
  • Cliente: Guarda el JWT en el navegador.
  • Protección de rutas: Se usan guards (CanActivate) para verificar autenticación antes de cargar rutas protegidas.

flujo autenticacion


Implementación práctica en Angular


AuthService:

  • Envía credenciales al backend.
  • Maneja el almacenamiento y envío del token.
  • Expone métodos para login y logout.

Almacenamiento del token:

  • localStorage: persiste entre sesiones del navegador.
  • sessionStorage: se borra al cerrar la pestaña.

Interceptores HTTP:

  • Se agregan automáticamente a todas las peticiones HTTP.
  • Adjuntan el token al encabezado Authorization.

Guards (CanActivate):

  • Evalúan si el usuario está autenticado antes de permitir acceso.
  • Bloquean acceso a páginas sensibles si no se cumple la condición.


Mejores prácticas de seguridad


Uso de HTTPS:

  • Siempre cifra la comunicación para evitar que datos como contraseñas o tokens sean interceptados.

Manejo seguro de tokens:

  • Aunque localStorage y sessionStorage son opciones, se recomienda usar HttpOnly cookies si es posible para mitigar ataques XSS.

Protección contra CSRF:

  • Usa tokens de sincronización o configura correctamente el servidor para evitar este tipo de ataques.

seguridad angular


Conclusión


Angular nos permite implementar autenticación de forma modular y segura. Con JWT, guards e interceptores, puedes construir aplicaciones modernas y protegidas. Y recuerda: no se trata solo de "loguear", sino de proteger a tus usuarios y sus datos.


¿ Quieres conocer más ?
¡ Agenda una llamada !
¡ Contáctanos en WhatsApp