¿Qué es un JWT? El usuario envía un código alfanumérico al servidor, que se encarga de decodificar el código, lo valida y va a ver si existe el usuario en el sistema.

- Como se indica en su propia página, es un estándar abierto recogido en el documento RFC 7519.
- Se encarga de identificar un usuario en un sistema.
- Identifica si tiene permisos según sus roles.
- Identifica a qué recursos del sistema puede acceder el usuario.
- Evita tener que guardar sesiones al servidor ni realizar consulta a este. El JWT es autónomo.
- Hace que el servidor funcione más rápido al consumirse menos recursos.
- Se puede leer, se puede manipular.
- No podemos poner en él ni datos de tarjetas de crédito ni contraseñas. No poner información sensible.
- Es una buena práctica indicar el tiempo de caducidad para el JWT.
- JWT es una autenticación stateless, no tiene estados. Es decir, cada vez que queremos acceder a un recurso protegido del sservidor tenemos que mandar un token.
¿Es seguro el JWT entonces?
Sí. Ya veremos porqué. Pero hay que tener en cuenta de NO mandar información comprometida porque la codificación es Base64, es totalmente reversible.
jsonwebtoken, ¿cómo funciona?
Veamos el ciclo de vida del jsonwebtoken (jwt).
- El cliente envía una petición POST con username y password al servidor.
- Si son in correctos el serviddor devuelve un error 401 Unauthorized. Si son correctos va al siguiente paso.
- Si son correctos el servidor crea un JWT con el secreto y lo retorna al cliente (200 ok).
- El cliente almacena el jsonwebtoken en LocalStore o SessionStore. La diferencia entre ambos es que en LocalStore podemos incluso reiniciar el ordenador sin que el jwt desaparezca. Con SessionStore se pierde nada más cerrar el navegador.
- Ya podemos acceder a páginas/recursos que requieren acceso. El cliente envía el JWT en las cabeceras HTTP, en el header.
- El servidor valida la firma y si el token no es válido devuelve acceso denegado: 403 Forbidden. Si todo es correcto obtiene los datos del usuario (Claims). Verifica los Permisos y Roles y si tiene acceso se realiza la consulta a la base de datos mediante el servicio API REST y devuelve la respuesta al cliente, ya sea un JSON o XML.
Partes de las que se compone el JSON Web Token
El JWT se compone de las siguientes partes:
- Header: el encabezazdo, que indica el tipo y el algoritmo que utiliza. El Header y el Payload se separan mediante un punto.
- Payload: contiene los datos de usuario y privilegios, así como información que queramos añadir. Contiene el sub (que es un identificador), y el name nombre de usuario. El Payload y el Signature se separan mediante un punto.
- Signature: la firma. Verifica si el token es válido.
Ejemplos
En próximas entradas en el blog vamos a ver la implelmentación de OAuth2 que tiene Spring Framework mediante Spring Security.
Deja una respuesta