Mantente al día sobre las novedades de tu asunto favorito

Aprende a crear sitios web increíbles con facilidad

Usa el poder de Internet para promocionar tu negocio

Inspírate con las estrategias de grandes empresas

Contenido variado para potenciar los resultados de tu proyecto

La confirmación de tu inscripción ha sido enviada a tu correo electrónico

¡Gracias por suscribirte, esperamos que disfrutes nuestros contenidos!

Destacado en la categoría:

json web tokens

Compartir:

Descubre qué son los JSON Web Tokens y cómo pueden ayudarte a comprender los fundamentos del JWT.

Actualmente, los JSON Web Tokens (JWT) son ampliamente utilizados en diversas aplicaciones, garantizando la seguridad de la información.


En este artículo, presento algunos de los conceptos fundamentales que permiten entender la base del JWT. ¡Echa un vistazo a continuación!

¿Qué es JWT?

JWT es una estructura independiente para la seguridad de la información en forma de tokens de acceso. Estos tokens presentan la información en formato JSON, donde se cifran y se utilizan para validar la comunicación entre las partes involucradas.

A continuación, ve algunas razones por las que el JWT se ha vuelto tan popular hoy en día.

Rendimiento 

Los JWT ofrecen una ventaja significativa al ser stateless. Esto significa que no es necesario realizar consultas constantes a la base de datos para validar cada usuario en cada solicitud realizada.


Cuando un usuario se autentica, se genera un JWT y se envía al usuario, quien lo incluirá en todas las solicitudes posteriores. El servidor luego valida el token enviado, eliminando la necesidad de consultar la base de datos, lo que mejora significativamente el rendimiento de la aplicación.

Seguridad 

Los JWT contribuyen a la seguridad de varias maneras. Por ejemplo, una vez que un token está firmado, podemos verificar su autenticidad e integridad. De esta manera, podemos confirmar que el contenido es válido y que el autor del contenido es quien dice ser.


Además, el payload del token JWT está cifrado, lo que garantiza la confidencialidad de los datos y dificulta que un atacante modifique el token o utilice uno robado, ya que esto invalidaría la firma.

json web tokens

Usabilidad 

El JWT sigue un estándar abierto (RFC 7519) que define una forma concisa de transmitir información de manera segura mediante un objeto JSON. Este objeto puede ser transmitido por varias plataformas y lenguajes de programación.
Gracias a esto, los JWT pueden usarse para autenticar solicitudes en dispositivos móviles, navegadores y escritorios.

La estructura estándar de un JWT 

Como se mencionó anteriormente, el JWT se construye siguiendo una estructura estándar (RFC 7519) y está compuesto por tres partes esenciales: header, payload y signature. Vamos a detallar cada una de ellas a continuación.

Header 

El encabezado del JWT desempeña un papel crucial, ya que contiene información relevante sobre cómo se procesa un token. Está compuesto por dos partes:

  • Typ (type): designa el tipo de token. Para un JWT, el valor de esta clave será “JWT”.
  • Alg (Algorithm): esta parte especifica el algoritmo de firma utilizado para codificar el token. Pueden utilizarse varios algoritmos, como HMAC, SHA256 y RSA.

El encabezado está codificado en Base64URL. A continuación, un ejemplo de encabezado de JWT:

{

  “alg”: “SHA256”,

  “typ”: “JWT”

}

Payload 

En el payload se incluyen las informaciones pertinentes relacionadas con la autenticación y autorización que pretendemos transmitir.
Normalmente, el payload contiene declaraciones sobre una entidad (generalmente un usuario) y datos adicionales. Algunas de las declaraciones estándar más utilizadas son:

  • iss (issuer): emisor del token.
  • aud (audience): destinatario previsto del token.
  • exp (expiration time): fecha y hora en que el token expira.
  • nbf (not before): fecha y hora en que el token se vuelve válido.
  • iat (issued at): fecha y hora en que el token fue emitido.
  • sub (subject): sujeto del token (generalmente la identificación del usuario).

Al igual que el encabezado, el payload también está codificado en Base64URL y estructurado en formato JSON. A continuación, un ejemplo de cómo puede lucir:

{

  “sub”: “123456”,

  “name”: “Snappy HostGator”,

  “email”: “[email protected]”,

  “role”: “admin”

}

En este ejemplo, se almacenan y transmiten de forma segura las informaciones relevantes del usuario, como el ID del sujeto (sub), el nombre, el correo electrónico y el rol.

json web tokens

Signature 

Por último, pero no menos importante, la firma es una parte esencial del JWT, que garantiza la integridad de los datos transmitidos y, por lo tanto, confirma la autenticidad del token. Esto es crucial para evitar cualquier manipulación de los datos durante la transmisión.


La firma se crea combinando el header y el payload codificados, junto con una clave secreta, mediante un algoritmo específico. Este algoritmo se define en el encabezado del JWT. Por ejemplo, si utilizamos el algoritmo SHA256 (según lo especificado en el header) y la clave secreta “secret”, la firma se creará de la siguiente manera:

HMACSHA256(

  base64UrlEncode(header) + “.” +

  base64UrlEncode(payload),

  ‘secret’

)

Esta firma se agrega como la tercera parte del JWT. Cuando se recibe un token, el receptor puede decodificar la firma utilizando la misma clave secreta y el algoritmo, y compararla con la información que genera por sí mismo.


Si ambas informaciones coinciden, esto valida la autenticidad del token y garantiza que los datos no han sido manipulados durante la transmisión.

Ejemplo de uso de JWT

Podemos considerar un escenario común, donde tenemos un sitio con una área de miembros en la que los usuarios deben iniciar sesión para acceder.


Cuando el usuario se registra o inicia sesión por primera vez, el servidor verifica las credenciales del usuario y, si son válidas, genera un JWT. Este JWT puede incluir información como la identificación del usuario (sub) y su nivel de acceso (role), y luego el servidor devuelve este JWT al cliente.

El cliente, generalmente el navegador, almacenará este JWT, normalmente en una cookie o en el localStorage. Entonces, cada vez que el cliente haga una solicitud al servidor para acceder a una página o recurso que requiera autenticación, enviará el JWT junto con la solicitud.


En este momento, cuando el servidor recibe la solicitud, primero verifica la firma del JWT para asegurarse de que sea válido y no haya sido manipulado de alguna manera. Si la firma es válida, el servidor lee el payload del JWT para identificar al usuario.


Esto permite al servidor saber quién es y qué puede hacer sin la necesidad constante de consultar la base de datos o mantener un estado de sesión, simplificando el proceso y haciendo la aplicación más eficiente para el usuario.

Navega por asuntos

    Tags:

      Douglas Vieira

      Graduado en Periodismo y con un MBA en Marketing, ha trabajado en importantes portales a lo largo de su carrera, incluyendo UOL Jogos, TecMundo y Voxel. Amante de las caminatas, las series, las películas y los juegos retro, no se cansa de decir a todos que Chrono Trigger es el mejor juego jamás creado en la historia.

      Más artículos del autor

      Crea tu presencia en línea

      Encuentra el nombre perfecto para tu web:

      www.