CoderTools

Codificador/Decodificador JWT

JWT decodificado

Encabezado


                    

Carga útil


                    

Firma


                    

¿Qué es JWT?

JSON Web Token (JWT)

JWT (JSON Web Token) es un estándar abierto (RFC 7519) que define una forma compacta y autocontenida para transmitir de forma segura 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 (con el algoritmo HMAC) o un par de claves pública/privada usando RSA o ECDSA.

Estructura JWT

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

xxxxx.yyyyy.zzzzz
  • Encabezado : Contiene el tipo de token (JWT) y el algoritmo de firma (por ejemplo, HS256, RS256)
  • Carga útil : Contiene las reclamaciones - declaraciones sobre una entidad (típicamente el usuario) y datos adicionales
  • Firma : Se utiliza para verificar que el remitente del JWT es quien dice ser y para asegurar que el mensaje no se modificó en el camino

Algoritmos de firma

JWT soporta varios algoritmos de firma:

  • HS256: HMAC con SHA-256. Algoritmo simétrico usando un secreto compartido
  • HS384: HMAC con SHA-384. Algoritmo simétrico con hash más fuerte
  • HS512: HMAC con SHA-512. Algoritmo simétrico con hash más fuerte
  • RS256: Firma RSA con SHA-256. Algoritmo asimétrico usando par de claves pública/privada
  • RS384: Firma RSA con SHA-384. Algoritmo asimétrico con hash más fuerte
  • RS512: Firma RSA con SHA-512. Algoritmo asimétrico con hash más fuerte

Reclamaciones estándar

JWT define varias reclamaciones estándar (nombres de reclamaciones registrados) que proporcionan información útil:

  • iss (Issuer): Emisor del token
  • sub (Subject): Sujeto del token (ID de usuario)
  • aud (Audience): Audiencia prevista
  • exp (Expiration Time): Tiempo de expiración (marca de tiempo Unix)
  • nbf (Not Before): No válido antes de este tiempo
  • iat (Issued At): Tiempo de emisión
  • jti (JWT ID): Identificador único del token

Casos de uso comunes

  • Autenticación: Después del inicio de sesión del usuario, cada solicitud subsiguiente incluye el JWT, permitiendo el acceso a rutas, servicios y recursos
  • Intercambio de información: Transmitir de forma segura información entre partes con verificación de firma
  • Inicio de sesión único (SSO): Ampliamente utilizado para funciones de SSO debido a la baja sobrecarga y capacidad entre dominios
  • Autorización API: Autenticación sin estado para APIs RESTful
  • OAuth 2.0 y OpenID Connect: Componente central de los protocolos de autenticación modernos

Nota de seguridad: Los tokens JWT están firmados para verificar la autenticidad pero no están cifrados por defecto. No almacene información sensible en la carga útil a menos que esté cifrada por separado. Use siempre HTTPS para transmitir tokens. Almacene tokens de forma segura (por ejemplo, cookies httpOnly para aplicaciones web). Implemente mecanismos apropiados de expiración y renovación de tokens. Nunca exponga su clave secreta en código del lado del cliente.

Referencias