Mcatorce Suite
← Volver al blog

Cómo Funciona la Firma de un JWT: HS256 Explicado Paso a Paso

Las tres partes de un JSON Web Token, cómo se calcula la firma HMAC-SHA256 a partir de la cabecera, la carga útil y el secreto, y por qué la firma demuestra la integridad.

Prueba la herramienta: Codificador JWT

Un JSON Web Token (JWT) es una cadena compacta que se usa para transportar afirmaciones entre partes, habitualmente en sistemas de inicio de sesión. Tiene tres partes separadas por puntos: cabecera, carga útil y firma.

Las tres partes

  1. Cabecera: JSON que describe el token, por ejemplo {"alg":"HS256","typ":"JWT"}.
  2. Carga útil: JSON con las afirmaciones, como el id de usuario, una hora de caducidad y datos personalizados.
  3. Firma: un valor que demuestra que las dos primeras partes no se modificaron.

La cabecera y la carga útil se codifican cada una con base64url, que es base64 usando - y _ en lugar de + y / y sin el relleno =.

Calcular la firma HS256

HS256 significa HMAC con SHA-256. Los pasos son:

  1. Codifica la cabecera en base64url.
  2. Codifica la carga útil en base64url.
  3. Únelas con un punto: cabeceraB64.cargaB64.
  4. Calcula el HMAC-SHA256 de esa cadena con la clave secreta.
  5. Codifica el resultado en base64url.

El token final es cabeceraB64.cargaB64.firmaB64.

Qué demuestra la firma

Cualquiera que conozca el secreto puede recalcular la firma y compararla. Si cambió incluso un carácter de la cabecera o la carga útil, la firma ya no coincidirá. Esto da integridad y autenticidad: el token vino de alguien con el secreto y no fue alterado.

Qué no hace

La carga útil está codificada, no cifrada. Cualquiera puede decodificarla y leerla, así que nunca pongas contraseñas ni datos sensibles dentro de un JWT normal.

Afirmaciones comunes

  • iss emisor, sub sujeto, aud audiencia.
  • exp caducidad y nbf no válido antes de, ambos en segundos Unix.
  • iat emitido en.

Pruebas y aprendizaje

Un codificador te permite construir tokens con afirmaciones elegidas y un secreto de prueba para probar una API o estudiar el formato. Usa secretos desechables para esto. No pegues nunca un secreto real de producción en ninguna página web.

Preguntas frecuentes

¿HS256 es el único algoritmo? No. RS256 y ES256 usan pares de claves pública y privada, que encajan cuando quien verifica no debe tener el secreto de firma.

¿Qué longitud debe tener el secreto? Al menos 32 bytes aleatorios para HS256.