DEV Community

Nahuel Segovia
Nahuel Segovia

Posted on

1 2

Json Web Token, ¿Qué es?

¿Qué es JWT o Json Web Token?

JSON Web Token es un estándar abierto basado en JSON propuesto por IETF para la creación de tokens de acceso que permiten la propagación de identidad y privilegios o claims en inglés.

Contiene toda la información importante sobre una entidad, lo que significa que no hace falta consultar una base de datos ni que la sesión tenga que guardarse en el servidor (sesión sin estado)

¿Cómo se compone un JWT?

Un token JWT se compone de 3 partes codificadas en base64 que están separadas por un punto. Estas tres partes son las siguientes:

Header:

Contiene generalmente 2 valores y nos proporciona información sobre tipo de token y el tipo de cifrado que se utilizó para generarlo:

{ "alg": "HS256", "typ": "JWT" }
Enter fullscreen mode Exit fullscreen mode

Payload:

Contiene los datos del usuario y sus privilegios, aunque también podemos enviar otros tipos de datos(algo que no es recomendable)

Signature:

Sería la firma que nos permite verificar que quien está tratando de hacer algo con nuestra aplicación sea la persona con los permisos suficientes. Esta firma se crea a través de la unión de las anteriores partes (Header + Paylod) codificados en base64 y una clave secreta que generalmente es proporcionada por el servidor, esto hace que el hash generado sea único y si alguien intenta modificarlo, su valor va a cambiar, por lo que no ya no va a servir para hacer peticiones en nuestro server.

Generando un JWT en pseudocódigo(Platzi):

key =  'clavesecreta'
unsignedToken = base64Encode(header) + '.' + base64Encode(payload)
signature = SHA256(key, unsignedToken)
token = unsignedToken + '.' + signature
Enter fullscreen mode Exit fullscreen mode

Token final:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjUwMTYyNzQxLCJpYXQiOjE2NTAxNjI0NDEsImp0aSI6Ijg0ZjhjMDlkZDE2MzRiMGNhZDlhMzUzZTNmODNlMDA4IiwidXNlcl9pZCI6MX0.qflyviX71uzLknz5YAjviVr1Bya-Z1e9AGXuHKuwEFc
Enter fullscreen mode Exit fullscreen mode

Algo bueno es que podemos jugar con la página oficial de JWT y ver la composición de un token de una manera mucho más entendible:

Image description

Image of AssemblyAI tool

Challenge Submission: SpeechCraft - AI-Powered Speech Analysis for Better Communication

SpeechCraft is an advanced real-time speech analytics platform that transforms spoken words into actionable insights. Using cutting-edge AI technology from AssemblyAI, it provides instant transcription while analyzing multiple dimensions of speech performance.

Read full post

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay