Guía completa sobre Interceptores para Tokens Bearer en Angular, Android y Spring Boot

  • Centralización de la autenticación mediante el uso de interceptores para evitar la repetición de código en cada petición HTTP.
  • Implementación de flujos de seguridad bidireccionales, desde la inyección de tokens en el cliente hasta la validación de JWT en el servidor.
  • Uso de herramientas específicas como HttpInterceptor en Angular, OkHttp en Android y filtros de seguridad en Spring Boot.

tokens Bearer

Cuando nos metemos en el mundo de las aplicaciones que requieren seguridad y control de acceso, es habitual que el backend nos pida una prueba de identidad en cada llamada. Para no volvernos locos enviando el mismo token manualmente en cada petición, existen herramientas llamadas interceptores, que actúan como un peaje inteligente donde podemos modificar la solicitud antes de que salga hacia el servidor.

La gran ventaja de usar este enfoque es que respetamos el principio DRY (Don’t Repeat Yourself), evitando que nuestro código parezca un disco rayado. Al centralizar la gestión de los encabezados, conseguimos que la aplicación sea mucho más mantenible y limpia, permitiéndonos además capturar errores de forma global sin tener que llenar cada servicio de bloques try-catch repetitivos.

Dominando los interceptores en Angular

En el ecosistema de Angular, un interceptor es básicamente una clase que debe implementar la interfaz HttpInterceptor. Esta interfaz nos obliga a definir un método llamado intercept, el cual recibe la petición actual y un manejador que se encarga de pasar la solicitud al siguiente paso de la cadena.

Si intentáramos enviar un token sin interceptores, tendríamos que crear un objeto de HttpHeaders en cada llamada, lo cual es un engorro absoluto. Al implementar la interfaz, podemos clonar la solicitud (ya que las peticiones en Angular son inmutables) y añadirle el token Bearer. Para que esto funcione, es vital registrar la clase en el app.module.ts dentro del array de providers, utilizando la clave HTTP_INTERCEPTORS y marcando el campo multi: true para no sobrescribir otros interceptores que pudieran existir.

Además de añadir tokens, podemos usar la potencia de RxJS y el operador catchError para gestionar las respuestas fallidas. De esta manera, si el servidor devuelve un error, el interceptor puede capturarlo y lanzar un mensaje personalizado o redirigir al usuario, manteniendo la lógica de negocio separada de la gestión de errores de red.

aplicaciones Android enviando datos sin cifrar
Artículo relacionado:
¿Tus aplicaciones Android están enviando datos sin cifrar? Guía EXHAUSTIVA sobre privacidad, seguridad y apps recomendadas para proteger tus datos

Implementación en Android con OkHttp y Retrofit

Si saltamos al desarrollo de aplicaciones Android, la combinación de OkHttp y Retrofit es el estándar de oro. Aquí, el proceso es similar pero con un giro muy interesante: podemos usar anotaciones personalizadas como @InjectAuth para decidir qué peticiones necesitan el token y cuáles deben ser públicas.

El flujo consiste en crear un AuthInterceptor que analice la petición. Si detecta que el método de la API ha sido marcado con nuestra anotación, el interceptor procede a insertar el encabezado de autorización automáticamente. Esto evita que el desarrollador tenga que añadir el token en cada definición de interfaz de Retrofit, mejorando drásticamente la escalabilidad del proyecto y la limpieza del código.

cómo activar VPN Android
Artículo relacionado:
Cómo activar la VPN en Android y bloquear tráfico no seguro

El rol de Axios en JavaScript

Para quienes desarrollan en JavaScript puro o frameworks ligeros, Axios ofrece una funcionalidad de interceptores muy potente y sencilla de configurar. Podemos definir interceptores tanto de solicitud (request) como de respuesta (response).

El interceptor de solicitud se ejecuta justo antes de que la petición salga, siendo el lugar ideal para inyectar el Authorization: Bearer token. Por otro lado, los interceptores de respuesta nos permiten procesar los datos antes de que lleguen al .then() o al await, o incluso realizar logs de depuración calculando cuánto tiempo ha tardado el servidor en responder mediante la comparación de marcas temporales.

Seguridad en el Backend con Spring Boot y JWT

Para que todo este despliegue en el cliente tenga sentido, el servidor debe saber gestionar estos tokens. En un entorno de Spring Boot, se suele implementar la arquitectura JWT (JSON Web Token). Un token JWT se compone de tres partes: el encabezado, el payload (con los datos del usuario y sus permisos) y la firma digital para evitar manipulaciones.

El proceso comienza con la autenticación, donde el usuario envía sus credenciales y el servidor genera un token firmado. Posteriormente, se implementa un filtro de autorización (como OncePerRequestFilter) que intercepta cada llamada entrante. Este filtro extrae el token del encabezado, lo valida mediante una clave secreta y, si es correcto, establece la autenticación en el contexto de seguridad de Spring para permitir el acceso al recurso.

qué es Browser-in-the-Middle y cómo es su ataque
Artículo relacionado:
Qué son los ataques Browser-in-the-Middle y cómo protegerte

Tener un sistema robusto de interceptores en el cliente y filtros en el servidor garantiza que la comunicación sea segura y eficiente. Desde la clonación de peticiones en Angular hasta las anotaciones en Retrofit o la validación de firmas en Spring Boot, el objetivo es siempre el mismo: automatizar la seguridad para que el programador pueda centrarse en la funcionalidad y no en la repetición de tareas tediosas de infraestructura. Comparte esta información para que más personas conozcan del tema.


Add as preferred source