Qué es Json Web Token (JWT) y Como Funciona

Qué es json web token

Un JSON Web Token (JWT) es un estándar abierto (RFC 7519) para representar afirmaciones de forma segura entre dos partes, como por ejemplo, un cliente y un servidor. Un JWT se compone de tres partes: el encabezado, el cuerpo y la firma. Cada una de estas partes se codifica en formato Base64 URL y se separan por un punto (“.”) para formar el JWT completo.

A continuación, te explicaré en detalle cada una de las partes de un JWT:

  1. Encabezado (Header): La primera parte de un JWT es el encabezado, que se utiliza para especificar el tipo de token (JWT) y el algoritmo de cifrado utilizado para firmar el token. Un ejemplo de encabezado puede ser el siguiente:
{
  "alg": "HS256",
  "typ": "JWT"
}

En este ejemplo, estamos especificando que el algoritmo de cifrado utilizado para firmar el token es HMAC SHA-256 (“alg”: “HS256”) y que el tipo de token es JWT (“typ”: “JWT”).

  1. Cuerpo (Payload): La segunda parte de un JWT es el cuerpo, que contiene los datos del usuario y las afirmaciones que se quieren transmitir. El cuerpo puede contener cualquier información que se desee, pero existen algunas afirmaciones predefinidas que se utilizan comúnmente, como por ejemplo:
  • “sub” (subject): identifica el sujeto del JWT (por ejemplo, el ID del usuario).
  • “iss” (issuer): identifica quién emitió el JWT.
  • “aud” (audience): identifica quién es el destinatario del JWT.
  • “exp” (expiration time): indica la fecha de expiración del token.
  • “iat” (issued at): indica la fecha de emisión del token.

Un ejemplo de cuerpo puede ser el siguiente:

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

En este ejemplo, estamos especificando que el sujeto del JWT es el usuario con ID “1234567890”, que el nombre del usuario es “John Doe” y que el token fue emitido el 18 de enero de 2018 a las 11:17:02 (hora Unix).

  1. Firma (Signature): La tercera parte de un JWT es la firma, que se utiliza para verificar que el token no ha sido manipulado y que es seguro de usar. La firma se crea a partir del encabezado, el cuerpo y una clave secreta compartida entre el cliente y el servidor. La clave secreta se utiliza para firmar el token utilizando el algoritmo especificado en el encabezado.

La firma se crea concatenando el encabezado y el cuerpo del token, separados por un punto (“.”) y se cifran utilizando la clave secreta y el algoritmo especificado en el encabezado. Un ejemplo de firma puede ser el siguiente:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secretKey)

En este ejemplo, estamos utilizando el algoritmo HMAC SHA-256 para crear la firma del token, utilizando la clave secreta “secretKey”. La firma resultante se codifica en Base64 URL y se agrega al JWT completo.

En resumen, un JWT es una forma segura de transmitir afirmaciones entre dos partes utilizando un formato compact

Deja un comentario