Protección de datos de token JWT

| Última modificación: 1 de julio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes qué es y como funciona la protección de datos de token JWT? Un JSON Web Token, también conocido como JWT, es un estándar de transmisión de datos en la web de manera muy segura, comúnmente utilizado para validar las credenciales de un usuario en una pantalla de login. En este sentido, es un elemento que no solo nos permite asegurar la validez de las credenciales, sino también la seguridad de los datos del usuario. En este post, te enseñaremos cómo funciona la protección de datos de token JWT y cómo hacerla parte de tu día a día como desarrollador.

Antes de empezar con la protección de datos de token JWT

En nuestros artículos sobre codificar un JWT con JavaScript y decodificar JWT desde JavaScript, te hemos enseñado que estos tokens de verificación se pueden descomponer en objetos para leer las credenciales del usuario usando métodos como JSON.parse, atob, btoa y split. Esto nos permite consultar las credenciales del usuario para identificarlo y darle determinados permisos en nuestra web.

Ahora, para no tener que hacer todo este proceso desde el código (que no es un método mejor o peor, solo diferente), algunas API Rest suelen devolver un endpoint que se ve de una manera similar a: /user/me. Este tipo de endpoints reciben el JWT que obtenemos en un login en la cabecera. Luego, este endpoint nos devuelve la información del usuario que está realizando la petición, a partir del JWT que procesa. Además de facilitar el proceso con un JWT, estos endpoints son fundamentales para la protección de datos de token JWT.

Por estos temas de protección de datos de token JWT, endpoints como los anteriores se utilizan con frecuencia en el trabajo diario de un desarrollador web. A continuación, te explicamos exactamente cómo funciona esto.

¿Cómo funciona la protección de datos de token JWT?

La idea detrás de usar endpoints como los anteriores es priorizar la protección de datos de token JWT. En nuestro post sobre qué hay un JWT, te hemos mostrado cómo usamos la herramienta online jwt.io para decodificar un token. Allí también te hemos mostrado que la segunda parte de un JWT, el payload, nos muestra los datos concretos del usuario en un objeto con propiedades en formato clave:valor.

Esta sección de payload nos devuelve datos muy concretos, como el id de usuario y su nombre. Hasta ahí no hay muchos problemas. Sin embargo, a veces hay información sensible del usuario que no debe estar en el token, pues esta información es muy fácil de descifrar y leer. Esta información no solo no debe estar, sino que también es ilegal que esté, pues se opone a la ley orgánica de protección de datos. Aquí es donde empezamos a hablar de protección de datos de token JWT.

Por lo anterior, se suelen implementar los endpoints de tipo /user/me. Allí, viaja el JWT, se lee, se verifica que no está manipulado y, entonces se devuelve la información de usuario loggeado, como podría ser su DNI, su género, su número de teléfono, correo electrónico, etc. De este modo, no estamos transportando la información del JWT directamente, sino por medio de un endpoint en una API segura.

Después de leer este post, ya sabes exactamente cómo funciona la protección de datos de token JWT. Sin embargo, ¡todavía queda mucho por aprender sobre los datos de la web! Por ello, te invitamos a dar un paso más en tu formación y a formar parte de nuestro Desarrollo Web Full Stack Bootcamp, un espacio de formación intensiva donde aprenderás los conceptos, herramientas y lenguajes de este mundo en un sentido tanto teórico como práctico. ¿Quieres seguir aprendiendo con nosotros para convertirte en un profesional en pocos meses? ¡Inscríbete ahora e impulsa tu futuro laboral!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado