Ir al contenido principal

JWT: JSON Web Tokens qué son y con qué se comen

JWT (JSON Web Token) es un estándar para intercambiar información de forma segura entre dos partes (por ejemplo, cliente y servidor).

  • Es un token (una cadena de texto) que contiene datos en formato JSON. 
  • Está firmado digitalmente, lo que garantiza que la información no fue alterada. 
  • Se usa mucho en autenticación: cuando un usuario inicia sesión, el servidor le entrega un JWT que luego se envía en cada petición para demostrar que está autenticado.

¿Para qué sirve?

  • Autenticación: comprobar que un usuario está logueado sin necesidad de guardar su sesión en el servidor. 
  • Autorización: verificar si el usuario tiene permisos para acceder a ciertos recursos.  
  • Intercambio de información: transmitir datos de manera confiable entre sistemas.

Estructura de un JWT

Un JWT tiene 3 partes separadas por puntos:

HEADER.PAYLOAD.SIGNATURE

  • Header: tipo de token y algoritmo de firma. 
  • Payload: la información (ej. id de usuario, roles). 
  • Signature: la firma que asegura que el token no fue modificado.

Ejemplo. Imagina que un usuario inicia sesión y el servidor le da este JWT:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.eyJ1c2VySWQiOjEsInJvbGUiOiJhZG1pbiJ9
.sflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Header (decodificado):

{
  "alg": "HS256",
  "typ": "JWT"
}

Payload (decodificado):

{
  "userId": 1,
  "role": "admin"
}

Signature: se genera con una clave secreta para validar que nadie lo cambió.

Veamos un diagrama donde se describe el logeo de un cliente :

Un uso práctico puede ser cuando el cliente hace una petición al servidor, envía el JWT en la cabecera:

Authorization: Bearer <token>

El servidor lo valida y, si es correcto, sabe quién es el usuario y qué permisos tiene.

Para más información puedes consultar el sitio: https://www.jwt.io/

Concluyendo, JWT es como un pase digital firmado que dice quién eres y qué puedes hacer, sin necesidad de que el servidor guarde tu sesión.

Continuaremos con este tema en próximas entregas.

Enlaces:

https://www.jwt.io/
https://jwtauditor.com/

Comentarios