JWT – JSON Web Tokens – Qué son, cómo funcionan y su estructura

JWT

JWT – JSON Web Tokens

¿Que son los JWT ?

WT es un standard RFC 7519 que define un método compacto, autónomo y seguro para transmitir información entre 2 sistemas. Se usa un objeto JSON de forma segura y mucho mas ligera que XML. Veamos por que es:

  • Compacto: Es de tamaño pequeño, se puede usar en un HTTP header, como parámetro GET o POST.
  • Autónomo: El payload contiene toda la información necesaria para el caso de uso. En autenticación por ejemplo puede tener toda la información del usuario sin tener que consultar la base de datos.

¿Cómo funciona?

Cuando un usuario se quiere identificar en una aplicación. Se comunica con el servidor mediante una api. En el servidor se comprueban las credenciales y si son correctas se devuelve un JWT.

Este JWT es almacenado de manera local en el navegador de forma que es accesible desde el cliente. Contiene información sobre el usuario que es usada para tener acceso a los servicios.

Autorización con JWT

Cuando un usuario entre en una zona restringida de la aplicación. El JWT se manda al servidor en Header de la petición. De esta forma el servidor puede comprobar si el usuario esta autorizado para realizar la petición sin necesidad de volver a realizar una petición a la base de datos.

Aturorización con JWT
Aturorización con JWT

¿Cuál es estructura?

Los JWT están compuesto por 3 partes:

  • Cabecera (Header) : Se trata de unos datos básicos estandar.
  • Carga útil (Payload): Es el cuerpo principal donde se almacenan los datos que interesan transmitir.
  • Firma de verificación (Verify signature):  Es una firma para verificar la autenticidad de los datos.

Estos datos se encriptan con un algoritmo HS254 y dan lugar a un fichero cifrado.

En la página oficial podemos ver una muesta. Vemos como cada una de las partes esta separada por un punto. En la imagen además se representan de diferente color.

Estructura JWT
Estructura JWT

La Firma de Verificación esta compuesta a su vez por 3 elementos:

  • EL header codificado por un algoritmo base 64.
  • El Payload codificado por un algoritmo base 64.
  • Una cadena secreta que puede estar o  no codificada ya que en principio es aleatoria.

Con esto se consigue dos cosas:

  • Es necesario conocer la cadena secreta para que un JWT sea valido. Si alguien intenta enviar un JWT con una clave secreta no válida obtendría un fallo del sistema.
  • Cualquier combio en los datos del header o payload darían como resultado una firma de verificación no válida que esta cambiaría.

En la siguiente imagen vemos como al modificar la firma de verificación el JWT deja de ser válido. Lo mismo ocurriría si cambiásemos cualquier otro dato.

Estructura JWT
Estructura JWT

Puesto que es una tecnología para ser usada tanto en cliente como en servidor.Por ello, en la página oficia se pueden encontrar librerias para una gran cantidad de lenguajes.

Si estas interesado puedes obtener mas información y hacer pruebas en la página oficial. https://jwt.io/

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *