Cursos a US$ 12.99 Ir a KODOTI
Cursos a US$ 12.99 KODOTI

Autenticación usando Json Web Token

Json Web Token nos permite autenticarnos sin hacer uso de sesiones a través de un token de acceso.

Rodríguez Patiño, Eduardo
Publicado:
18,522 lecturas
Rodríguez Patiño, Eduardo

En esta entrada vamos hacer una introducción a Json Web Token.

Sistemas clásicos

La lógica para autenticación en la mayoría de lo sistemas vendría ser la siguiente:

  1. Ingresamos nuestras credenciales
  2. Se valida el acceso
  3. Se persiste en una sesión nuestro login de esta manera el servidor ya sabe que estamos dentro.

Esto funciona genial, pero cuando hablamos de APIs RESTFul esto no sirve. Porque las APIs que siguen los principios REST nos dicen que son STATELESS y la información dada entre el cliente y el servidor (nuestra API) debe morir al finalizar el REQUEST. Con esto ganamos performance, ¿por qué se imaginan tener autenticados a millones de usuarios?, cada usuario hará uso de recursos de nuestro servidor.

Json Web Token

Para lidiar con este incoveniente se creo la autenticación mediante token llamada JwT, que basicamente es una cadena serializada que brinda información de acceso a nuestras APIs.

La lógica es la siguiente:

  1. Mi app se comunica con el API pasando credenciales (usuario y password), o logeando por proveedores como Facebook, Twitter.
  2. Nuestra API valida el acceso y en caso de éxito procederá a generar un TOKEN.
  3. Dicho TOKEN será retornado al cliente y este deberá pasarlo en cada REQUEST o PETICIÓN para validar el acceso del caso contrario nuestra API nos daría un 401 (acceso no autorizado).

¿Cómo trabaja JwT?

Para crear un token válido necesitamos definir un secret_key, el cual será único y nadie debe saberlo. De esta manera evitamos que otro token pueda ser usado en nuestra API porque necesita saber el secret_key con el que fue creado para poder otorgar un acceso válido.

Un token generado puede tener la siguiente forma:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNb3ppbGxhXC81LjAgKFdpbmRvd3MgTlQgNi4xOyBXT1c2NCkgQXBwbGVXZWJLaXRcLzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZVwvNDguMC4yNTY0LjEwOSBTYWZhcmlcLzUzNy4zNiIsImlhdCI6MTQ1NTU1MDIxMSwiZXhwIjoxNDU1NTUzODExLCJhdWQiOiIzMGE3NWU0OGYwNTEyNzM1Y2UwNTY5ODRmMGRlNDM4OWE5MzEyMGExIiwiZGF0YSI6eyJyZXNwb25zZSI6dHJ1ZSwibWVzc2FnZSI6IiIsImVycm9ycyI6W10sInJlc3VsdCI6eyJpZCI6IjEiLCJOYW1lIjoiRWR1YXJkbyIsIkxhc3ROYW1lIjoiUm9kcmlndWV6IiwiQWdlIjoiMjgifX19.KgrzgrYFOLgO52xQC9XLOzQ2xivh1ElEJEgc0qMOXIE

En el cual veremos ejemplos en otras publicaciones para leer dicho token desde .NET y PHP.


Estudia con nosotros

🚀 Mejora tus oportunidades laborales


¿Te gustó nuestra publicación?
Suscríbete a nuestro boletín