jwt jose rfc7515 rfc7519 security authentication standards

Estándares JOSE y JWT: RFC 7515 a 7519 (JWS, JWE, JWK, JWA, JWT)

Inmersión profunda en el stack JOSE. Conozca RFC 7515 (JWS), 7516 (JWE), 7517 (JWK), 7518 (JWA) y 7519 (JWT) para tokens de identidad seguros.

2026-04-11

Estándares JOSE y JWT: RFC 7515 a 7519

Si alguna vez ha implementado la autenticación web moderna, es probable que haya utilizado JSON Web Tokens (JWT). Pero JWT es solo una pieza de una familia más grande de estándares conocidos como JOSE (JSON Object Signing and Encryption). Comprender la relación entre estos estándares es crucial para construir aplicaciones seguras.

En esta guía, exploraremos los cinco RFC principales que componen el stack JOSE:

  • RFC 7515: JWS (JSON Web Signature)
  • RFC 7516: JWE (JSON Web Encryption)
  • RFC 7517: JWK (JSON Web Key)
  • RFC 7518: JWA (JSON Web Algorithms)
  • RFC 7519: JWT (JSON Web Token)

1. RFC 7515: JSON Web Signature (JWS)

JWS es la forma más común de JWT. Garantiza que el contenido del token no haya sido manipulado. Proporciona integridad y autenticidad, pero no confidencialidad (el contenido sigue siendo visible para cualquiera que vea el token).

Estructura:

Un JWS se representa típicamente en formato de Serialización Compacta, que tiene tres partes separadas por puntos: BASE64URL(Header) . BASE64URL(Payload) . BASE64URL(Signature)

  • Header: Especifica el algoritmo utilizado para la firma (por ejemplo, {"alg": "HS256"}).
  • Payload: Los datos reales que se firman.
  • Signature: El resultado de firmar el encabezado y la carga útil.

2. RFC 7516: JSON Web Encryption (JWE)

Mientras que JWS proporciona integridad, JWE proporciona confidencialidad. Cifra la carga útil para que solo el destinatario previsto pueda leerla.

Estructura:

La Serialización Compacta JWE tiene cinco partes: BASE64URL(Header) . BASE64URL(Encrypted Key) . BASE64URL(Initialization Vector) . BASE64URL(Ciphertext) . BASE64URL(Authentication Tag)

JWE se usa a menudo cuando el token contiene información confidencial, como PII (Información de identificación personal), que no debe ser visible para el cliente o los proxies intermedios.


3. RFC 7517: JSON Web Key (JWK)

Un JWK es una estructura de datos JSON que representa una clave criptográfica. Se utiliza para compartir claves públicas entre servidores de forma estandarizada.

Ejemplo:

{
  "kty": "RSA",
  "use": "sig",
  "kid": "1b94c",
  "n": "vXl...",
  "e": "AQAB"
}

Una colección de JWK se llama JWKS (JSON Web Key Set), que a menudo se encuentra en un endpoint como /.well-known/jwks.json.


4. RFC 7518: JSON Web Algorithms (JWA)

JWA es el "diccionario" para el stack JOSE. Define los algoritmos específicos utilizados para la firma (JWS) y el cifrado (JWE).

Algoritmos comunes:

  • HS256: HMAC usando SHA-256 (Simétrico).
  • RS256: RSASSA-PKCS1-v1_5 usando SHA-256 (Asimétrico).
  • ES256: ECDSA usando P-256 y SHA-256 (Asimétrico).
  • A128GCM: AES GCM usando una clave de 128 bits (Cifrado).

5. RFC 7519: JSON Web Token (JWT)

JWT es una aplicación de JWS o JWE donde la carga útil es un conjunto de Claims (Reclamaciones). Las reclamaciones son piezas de información sobre una entidad (normalmente un usuario).

Reclamaciones estándar:

  • iss: Emisor (Issuer)
  • sub: Sujeto (Subject, normalmente ID de usuario)
  • aud: Audiencia
  • exp: Tiempo de expiración
  • iat: Emitido en (Issued At)

Resumen comparativo

Estándar Propósito Analogía
JWS Integridad Una carta firmada
JWE Confidencialidad Un sobre cifrado
JWK Representación de claves Un archivo de clave pública
JWA Catálogo de algoritmos Una lista de cifrado
JWT Formato de datos El token real

Preguntas frecuentes FAQ

P: ¿Un JWT es siempre un JWS? R: No siempre, pero en el 99% de los casos, sí. Un JWT puede ser un JWS (firmado), un JWE (cifrado) o incluso un JWT no asegurado (sin firma).

P: ¿Debo usar RS256 o HS256? R: Generalmente se prefiere RS256 (Asimétrico) para tokens de identidad porque permite al cliente verificar la firma sin necesitar la clave privada. HS256 (Simétrico) es más rápido pero requiere compartir el secreto.

P: ¿Dónde puedo ver qué hay dentro de un JWT? R: Dado que las cargas útiles de JWS solo están codificadas en Base64, puede decodificarlas fácilmente. Sin embargo, nunca debe confiar en los datos a menos que haya verificado la firma.


Herramientas relacionadas