Decodificador JWT

Decodificador JWT (JSON Web Token) en línea. Soporta análisis y verificación de JWT, implementación puramente frontend, seguro y confiable

ENCODED

HEADER

El contenido del JWT decodificado se mostrará aquí

PAYLOAD

El contenido de la carga útil se mostrará aquí

VERIFY SIGNATURE

Ingrese la clave secreta utilizada para firmar el JWT

Seleccione el formato de codificación de la clave secreta

Base de Conocimientos del Decodificador JWT

¿Qué es la decodificación JWT?

La decodificación JWT es el proceso de descomponer un token JWT en sus componentes (encabezado, carga útil y firma) y mostrar su contenido. Dado que las partes del encabezado y la carga útil del JWT son simplemente datos JSON codificados en Base64, no se requiere una clave secreta para la decodificación.

Desglose de la estructura JWT

Encabezado: Contiene información sobre el tipo de token (typ) y el algoritmo de firma (alg)

Carga útil: Contiene las reclamaciones, como información del usuario, tiempo de expiración, etc.

Firma: Se utiliza para verificar la integridad del token, requiere clave secreta para verificación

Principales escenarios de uso de JWT

  • Autenticación: Después de que el usuario inicia sesión, el servidor genera un JWT y lo devuelve al cliente, que luego usa este token para autenticación en solicitudes posteriores
  • Intercambio de información: Transmitir información de forma segura entre diferentes servicios, ya que los JWT pueden verificarse mediante firmas
  • Inicio de sesión único (SSO): Permite a los usuarios acceder a otras aplicaciones relacionadas sin volver a iniciar sesión después de autenticarse en una aplicación
  • Autorización de API: Proporciona un mecanismo de autorización sin estado para APIs RESTful
  • Autenticación de aplicaciones móviles: Comunicación segura entre aplicaciones móviles y servicios backend
  • Arquitectura de microservicios: Transmitir información de identidad y permisos del usuario entre microservicios

Detalles de algoritmos JWT comunes

Algoritmos de cifrado simétrico (HMAC)

  • HS256 (HMAC-SHA256): El algoritmo más comúnmente utilizado, usa una clave secreta compartida para firmar y verificar
  • HS384 (HMAC-SHA384): Algoritmo hash más fuerte, proporciona mayor seguridad
  • HS512 (HMAC-SHA512): El algoritmo HMAC más fuerte, adecuado para escenarios de alta seguridad

Algoritmos de cifrado asimétrico (RSA)

  • RS256 (RSA-SHA256): Firma con clave privada RSA, verifica con clave pública, adecuado para sistemas distribuidos
  • RS384 (RSA-SHA384): Algoritmo de firma RSA más fuerte
  • RS512 (RSA-SHA512): El algoritmo de firma RSA más fuerte

Algoritmos de curva elíptica (ECDSA)

  • ES256 (ECDSA-SHA256): Utiliza firma digital de curva elíptica, mejor rendimiento que RSA
  • ES384 (ECDSA-SHA384): Algoritmo de firma de curva elíptica más fuerte
  • ES512 (ECDSA-SHA512): El algoritmo de firma de curva elíptica más fuerte

Campos comunes de carga útil

  • iss (Issuer): Emisor del token
  • sub (Subject): Sujeto del token, generalmente el ID del usuario
  • aud (Audience): Destinatario del token
  • exp (Expiration): Tiempo de expiración del token
  • iat (Issued At): Tiempo de emisión del token
  • nbf (Not Before): Tiempo de inicio de validez del token
  • jti (JWT ID): Identificador único del JWT

Mejores prácticas de seguridad JWT

  • Usar claves fuertes: Los algoritmos HMAC deben usar claves de al menos 256 bits, RSA debe usar claves de al menos 2048 bits
  • Establecer tiempos de expiración razonables: Evitar tokens de larga duración, se recomienda que los tokens de acceso expiren en 15-30 minutos
  • Usar HTTPS: Siempre transmitir JWT a través de HTTPS para prevenir ataques de intermediario
  • Verificar todas las reclamaciones: Verificar campos importantes como iss, aud, exp
  • Implementar mecanismo de revocación de tokens: Mantener una lista negra o usar combinación de tokens de corta duración y tokens de actualización
  • Evitar almacenar información sensible: No almacenar contraseñas o información personal sensible ya que el contenido JWT es decodificable
  • Usar algoritmos apropiados: Evitar usar el algoritmo "none" en producción
  • Rotación regular de claves: Cambiar periódicamente las claves de firma para reducir el riesgo de compromiso

Consideraciones de seguridad

  • Las partes del encabezado y la carga útil del JWT están codificadas en Base64 y pueden ser decodificadas y vistas por cualquiera
  • No almacene información sensible como contraseñas, números de tarjetas de crédito en JWT
  • La decodificación JWT no es lo mismo que la verificación JWT, la verificación requiere una clave secreta
  • Siempre verifique la expiración del JWT y otros campos importantes
  • Prevenir ataques de confusión de algoritmos: verificar estrictamente el tipo de algoritmo
  • Tener cuidado con el desfase del reloj: considerar diferencias de reloj del servidor al verificar reclamaciones de tiempo

Casos de uso prácticos

Autenticación de aplicaciones web

Después de que el usuario inicia sesión, el servidor genera un JWT que contiene el ID del usuario y permisos, el frontend lo almacena en localStorage o sessionStorage, y incluye este token en el encabezado Authorization para solicitudes API posteriores.

Comunicación entre microserviios

Después de que el gateway API verifica la identidad del usuario, genera un JWT que contiene información del usuario y lo pasa a servicios downstream, cada servicio no necesita volver a verificar la identidad del usuario, solo necesita verificar la firma JWT.

Acceso API de aplicaciones móviles

La aplicación móvil obtiene un JWT a través de nombre de usuario y contraseña, luego incluye este token en llamadas API posteriores, el servidor verifica la validez del token y permisos.

Fuentes autoritativas