Cómo funciona JWT

Esta publicación describe cómo funciona JSON Web Token. Encontrarás referencias en la parte inferior de esta página si quieres profundizar.

Nota: Esta publicación se basa en mi investigación y puede diferir de la implementación en el mundo real.

Érase una vez una estudiante de ingeniería de software llamada Keiko.

Aunque extremadamente brillante, nunca trabajó en ningún proyecto del mundo real.

Así que luchó con la codificación.

Cómo funciona JWT

Hasta que un día, decidió crear una aplicación meteorológica.

Y lo compartió con sus amigos.

Sin embargo, no tenía ni idea de cómo funcionaba la autorización de los usuarios.

HTTP no tiene estado; Significa que cada solicitud debe incluir la información necesaria.

Y sus amigos tuvieron que ingresar su nombre de usuario y contraseña en cada página para obtener la autorización.

Era frustrante.

Sesiones de seguimiento del almacén de sesiones
Sesiones de seguimiento del almacén de sesiones

Así que configuró un almacén de sesiones en el servidor:

  • Realiza un seguimiento de las sesiones de usuario y proporciona un ID de sesión al cliente.

  • Y el cliente incluye el ID de sesión con cada encabezado de solicitud.

A continuación, el servidor comprueba el almacén de sesiones para identificar el acceso del cliente.

Aunque resolvió temporalmente el problema de autorización, hubo problemas más nuevos.

Su pequeña aplicación se hizo popular entre los estudiantes universitarios de todo el mundo.

Así que tuvo que instalar más servidores y ponerlos detrás de un balanceador de carga.

Pero se volvió difícil administrar las sesiones con muchos servidores.

Porque el balaceador de carga puede enrutar las solicitudes de un usuario a diferentes servidores.

Sesiones permanentes para enrutar solicitudes de un usuario al mismo servidor
Sesiones permanentes para enrutar solicitudes de un usuario al mismo servidor

Así que organizó sticky sessions. Significa enrutar las solicitudes de un usuario específico al mismo servidor utilizando su ID de usuario o dirección IP.

Sin embargo, no se escala bien debido a los servidores con estado y a la distribución desigual de la carga.

Almacén de sesiones compartidas para realizar un seguimiento de las sesiones de usuario entre servidores
Almacén de sesiones compartidas para realizar un seguimiento de las sesiones de usuario entre servidores

Así que instaló un almacén de sesiones compartidas. Mantiene los datos de sesión separados en un almacén central.

Un almacén de sesiones compartidas permite servidores sin estado. Pero introduce el acoplamiento y se convierte en un único punto de fallo.

Por lo tanto, configuró JSON Web Token (JWT) para la autorización.

Autenticación vs Autorización
Autenticación vs Autorización

Piense en JWT como una insignia para ingresar a un edificio. Un usuario obtiene la insignia de la recepción después de la verificación. A continuación, pueden acceder a las habitaciones autorizadas sin volver a verificar su identidad.

El servidor no almacena información de sesión con JWT. En su lugar, JWT incluye la información de autorización necesaria y el servidor comprueba el JWT en cada solicitud.

Imagine la autenticación como un permiso para entrar en un edificio. Y la autorización como el permiso para entrar en determinadas estancias del edificio.

Cómo funciona JWT

1. Estructura de JWT

JWT no parece un objeto JSON, sino un conjunto de caracteres.

Consta de 3 partes:

  • Encabezado: Especifica el algoritmo de firma, como RSA o HMAC

  • Carga útil: Contiene datos y tiempo de caducidad

  • Firma: Muestra la autenticidad de la carga útil

La carga útil está codificada en base64url para que sea compacta y fácil de transmitir a través de las redes.

Cómo se ve JWT
Cómo se ve JWT

El servidor combina el encabezado y la carga útil con una clave secreta. A continuación, realiza el algoritmo de firma para crear la firma. Solo el servidor tiene acceso a la clave secreta.

El servidor vuelve a calcular la firma utilizando el encabezado y la carga útil cada vez que recibe un JWT. De este modo, se comprueba si se ha modificado la carga útil.

¿Listo para la mejor parte?

2. Flujo de trabajo de JWT

Explicación del flujo de trabajo de JWT
Explicación del flujo de trabajo de JWT

Este es el flujo de trabajo de autorización de JWT:

  1. El usuario introduce el nombre y la contraseña para la autenticación

  2. El servidor crea un JWT utilizando la información de autorización

  3. El servidor firma el JWT y se lo entrega al cliente

  4. El cliente incluye JWT en los encabezados HTTP para la autorización

El servidor permite una solicitud solo si la firma en el JWT es válida.

3. Seguridad JWT

Existe el riesgo de que JWT sea robado y utilizado para una autorización falsa.

Cómo proteger JWT
Cómo proteger JWT

Estas son algunas formas de evitar este problema:

  • Enviar JWT a través de HTTPS por seguridad

  • Establezca un tiempo de caducidad en el JWT para limitar el daño

  • Asigne roles mínimos a JWT para reducir el daño

Sin embargo, no hay forma de invalidar un JWT robado. Una solución alternativa es incluir el JWT robado en una lista de denegación en el servidor.

JWT sigue siendo un mecanismo de autorización popular en Internet y en la arquitectura de microservicios. Facilita la transferencia de información entre servicios.
Facebook
X
LinkedIn
Reddit
Pinterest
Threads

Post relacionados

Post recientes

Search