Los JSON Web Tokens (JWT) son un medio compacto y seguro para URL de representar reclamaciones que se transferirán entre dos partes. Estas reclamaciones se utilizan a menudo para garantizar la integridad y la autenticidad de la información.
Este artículo explora cómo funcionan los JWT. Veremos la estructura de un JWT, que consta de tres partes codificadas y firmadas digitalmente. A continuación, analizaremos los casos de uso comunes de los JWT y revisaremos algunos de los beneficios de su uso.
La estructura de un JWT (con ejemplo)
Un JSON Web Token (JWT) consta de tres partes separadas por puntos: Cabecera, Carga útil y Firma. La estructura general es:
xxxxxxxxxx.yyyyyyyyyy.zzzzzzzzzz
Cabecera:
- La cabecera suele constar de dos partes: el tipo de token, que es JWT, y el algoritmo de firma que se utiliza, como HMAC SHA256 o RSA.
- Ejemplo de cabecera (codificada en base64):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Carga útil:
- La carga útil contiene reclamaciones. Las reclamaciones son declaraciones sobre una entidad (normalmente, el usuario) y datos adicionales.
- Hay tres tipos de reclamaciones: registradas, públicas y privadas.
- Ejemplo de carga útil (codificada en base64):
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Firma:
- Para crear la parte de la firma, debe tomar la cabecera codificada, la carga útil codificada, un secreto, el algoritmo especificado en la cabecera y firmar eso.
- La firma se utiliza para verificar que el remitente del JWT es quien dice ser y para garantizar que el mensaje no se ha modificado por el camino.
- Ejemplo de firma:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Reuniéndolo todo:
Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Signature: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
JWT codificado:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwia
Los beneficios de usar JWT:
Los JWT contienen objetos JSON que están codificados y firmados, lo que garantiza la integridad y la autenticidad sin depender de sesiones con estado en el servidor.
Algunos de los beneficios clave que hacen que los JWT sean útiles son:
- Tamaño compacto gracias a la codificación JSON segura para URL para una mayor eficiencia del espacio
- Autocontenido con toda la información necesaria del usuario para evitar consultas excesivas a la base de datos
- Firmas digitales para seguridad a prueba de manipulaciones y verificación de autenticidad
- Naturaleza sin estado para mejorar la escalabilidad al eliminar las sesiones del lado del servidor
- Interoperabilidad universal con analizadores JSON disponibles en la mayoría de los idiomas
- Extensible a través de campos de datos personalizados sin romper los marcos existentes
JWT vs OAuth: la diferencia entre JWT y OAuth
JWT (JSON Web Token) y OAuth están relacionados, pero tienen diferentes propósitos en el contexto de la autenticación y autorización en el desarrollo web. Aquí hay una breve comparación de JWT y OAuth:
JWT (JSON Web Token):
- Propósito: JWT es una forma compacta y autónoma de transmitir información entre partes de forma segura. Se utiliza comúnmente para la autenticación y el intercambio de información.
- Contenido: JWT contiene reclamaciones sobre una entidad (normalmente, un usuario) y se utiliza a menudo para la autenticación del usuario. Las reclamaciones pueden incluir el ID de usuario, los roles, los permisos y otra información relevante. Los JWT se utilizan a menudo para crear sistemas de autenticación sin estado.
- Uso: Los JWT generalmente se envían como parte de los encabezados de solicitud en las solicitudes HTTP. Se utilizan para representar la identidad y los privilegios del usuario.
OAuth (Open Authorization):
- Propósito: OAuth es un marco para la autorización, que permite a una aplicación de terceros acceder a los recursos de un usuario en otro servidor sin exponer las credenciales del usuario. OAuth no está diseñado para la autenticación, sino para la delegación de autoridad.
- Roles: OAuth define roles como Propietario del recurso, Cliente, Servidor de autorización y Servidor de recursos. Permite escenarios en los que un usuario puede otorgar acceso a sus recursos (por ejemplo, fotos, contactos) a otra aplicación sin compartir sus credenciales.
- Tipos de concesión: OAuth introduce tipos de concesión (código de autorización, implícito, credenciales de cliente, contraseña, etc.) para especificar cómo se debe llevar a cabo el proceso de autorización.
- Tokens: OAuth implica el uso de tokens de acceso y tokens de actualización. Los tokens de acceso se utilizan para acceder a los recursos protegidos, y los tokens de actualización se pueden utilizar para obtener un nuevo token de acceso.
Diferencias clave:
- Propósito: JWT se utiliza principalmente para la autenticación y el intercambio de información, mientras que OAuth es un marco para la autorización.
- Contenido: JWT contiene reclamaciones sobre un usuario, mientras que OAuth se centra en definir roles y permisos y gestionar el acceso a los recursos.
- Roles: JWT se utiliza a menudo para representar la identidad del usuario, mientras que OAuth involucra roles como Propietario del recurso, Cliente, Servidor de autorización y Servidor de recursos.
- Tokens: JWT es un tipo de token utilizado para la autenticación, mientras que OAuth introduce tokens de acceso y tokens de actualización para gestionar la autorización.
¿Cómo funciona JWT?
Los JSON Web Tokens (JWT) desempeñan un papel clave en la autenticación al proporcionar una forma segura y eficiente de verificar la identidad de los usuarios. El proceso generalmente implica los siguientes pasos:
- Autenticación del usuario: Los usuarios inician sesión con su nombre de usuario y contraseña o a través de proveedores externos como Google o Facebook. El servidor de autenticación valida las credenciales y emite un JSON Web Token (JWT) que certifica la identidad del usuario.
- Generación de JWT: El proveedor de identidad (IdP) genera un JWT, firmándolo con una sal secreta o una clave privada. Este JWT encapsula información esencial del usuario, como el ID de usuario, los roles y el tiempo de caducidad.
- Uso de JWT: El cliente del usuario almacena de forma segura el JWT obtenido durante la autenticación. Al acceder a los recursos protegidos, el cliente incluye el JWT en el encabezado de autorización HTTP.
- Verificación de tokens: El servidor de recursos decodifica y verifica la autenticidad del JWT utilizando la sal secreta o la clave pública proporcionada. Este proceso garantiza la integridad y el origen del token.
JWT en Apidog
Apidog es una herramienta de prueba y desarrollo de API fácil de usar que destaca en la gestión de JSON Web Tokens (JWT). Con su interfaz intuitiva, Apidog simplifica el proceso de manejo de JWT, brindando soporte automático para la generación de tokens, la gestión dinámica y la inclusión perfecta en las solicitudes de API.

Esta herramienta agiliza los aspectos relacionados con JWT del desarrollo de API, lo que permite a los desarrolladores centrarse en pruebas e integración eficientes dentro de sus flujos de trabajo.