Menú
dev 10 min de lectura |

Estructura de JWT Explicada: Header, Payload y Signature

En el desarrollo web moderno, asegurar la comunicación entre clientes y servidores es fundamental. Los JSON Web Tokens (JWT) se han convertido en el estándar de la industria para representar reclamaciones de forma segura entre dos partes. Comprender cómo funcionan es esencial para implementar sistemas de autenticación robustos.

¿Qué es un JSON Web Token (JWT)?

Un JWT es un estándar abierto (RFC 7519) que define una forma compacta y autónoma de transmitir información entre partes como un objeto JSON. Esta información puede ser verificada y confiable porque está firmada digitalmente. Los JWT pueden firmarse usando un secreto (HMAC) o un par de claves pública/privada (RSA o ECDSA).

Las tres partes de un JWT

Un JWT consta de tres partes separadas por puntos (.):

  • Header (Encabezado): Contiene el tipo de token y el algoritmo de firma.
  • Payload (Carga útil): Contiene los datos o reclamaciones (claims) del usuario.
  • Signature (Firma): Permite verificar que el token no ha sido alterado.

Si desea inspeccionar el contenido de un token real, puede utilizar nuestro JWT Decoder.

Parte 1: El Header

El encabezado normalmente indica el algoritmo utilizado (como HS256) y el tipo de token (JWT). Luego se codifica en Base64Url.

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

Parte 2: El Payload

Contiene las reclamaciones. Estas pueden ser registradas (como sub para el ID del usuario o exp para la expiración), públicas o privadas. Al igual que el encabezado, se codifica en Base64Url.

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

Parte 3: La Firma

Para crear la firma, se toma el encabezado codificado, la carga útil codificada, un secreto y el algoritmo especificado. Esto garantiza que el contenido no ha sido modificado.

Cómo funciona la autenticación con JWT

El flujo típico es el siguiente:

  1. El usuario inicia sesión con sus credenciales.
  2. El servidor genera un JWT firmado y lo envía al cliente.
  3. El cliente almacena el token (por ejemplo, en localStorage o cookies).
  4. En cada petición posterior, el cliente envía el token en el encabezado Authorization: Bearer <token>.
  5. El servidor verifica la firma y concede el acceso si es válido.

Seguridad: No guarde secretos en el JWT

Es vital recordar que los JWT no están encriptados por defecto; solo están codificados. Cualquiera que intercepte el token puede leer el Payload. Por lo tanto, nunca guarde contraseñas ni datos sensibles en él. Para generar secretos fuertes para sus firmas, puede usar nuestro Password Generator.

Comparativa: HS256 vs RS256

Algoritmo Tipo Uso ideal
HS256 Simétrico (1 clave) Aplicaciones internas
RS256 Asimétrico (2 claves) Microservicios y APIs públicas

Conclusión

Los JWT son una herramienta poderosa para la escalabilidad y la seguridad en la web. Al comprender su estructura de tres partes, los desarrolladores pueden tomar mejores decisiones arquitectónicas y proteger sus aplicaciones de manera más efectiva.