Cookies y Sessions VS JSON Web Tokens PDF

Title Cookies y Sessions VS JSON Web Tokens
Author Juan Vasquez Ventura
Course Taller de programacion
Institution Universidad Tecnológica del Perú
Pages 3
File Size 128.7 KB
File Type PDF
Total Downloads 35
Total Views 140

Summary

Información sobre Json Web Tokens, que es y para que sirve. Es muy importante conocer acerca sobre esta librería que nos permite mantener una seguridad para enviar información mediante una api rest....


Description

Cookies y Sessions VS JSON Web Tokens

En este artículo vamos a analizar las ventajas y desventajas de usar un sistema de autenticación basado en JWT (JSON Web Tokens) frente al esquema tradicional basado en el uso de cookies y sesiones. A fin de facilitar la comprensión, voy a presentarte una serie de resúmenes, que he ido adaptando a partir de recursos interesantes que encontré por la Internet. Si deseas consultar las fuentes originales, puedes encontrar los enlaces al final del artículo.

Introducción Para comprender mejor este artículo, es necesario que conozcas previamente qué son las cookies y su relación con las server-side sessions. Si tienes en claro la diferencia entre cookies y sesiones, y cómo operan en conjunto, entonces podemos continuar hacia la primera pregunta.

¿Cookies o Tokens? ¿Qué es mejor? Pregunta He estado usando cookies y sesiones para gestionar la autenticación de usuarios en mis aplicaciones web, y estoy contento por lo simple que resulta su uso. Sin embargo, un desarrollador iOS me comentó que lo nuevo y más adecuado es usar JWT (JSON Web Tokens). Me dijo que JWT es el camino a seguir para implementar una autenticación en las aplicaciones móviles nativas. Sin dar ejemplos, simplemente comentó que las aplicaciones Android y iOS tienen problemas con las cookies. He buscado información, pero no he encontrado algo que demuestre que los JSON Web Tokens sean superiores a las Cookies. Es más, me resultan tan similares que no he podido encontrar una diferencia importante, ni por qué se recomienda su uso con las aplicaciones móviles nativas. Por lo menos a mi parecer, sí es posible usar Cookies en el desarrollo iOS. Entonces mi pregunta es, para una aplicación móvil, ¿qué ventajas presenta una API que hace uso de JWT en vez de Cookies para la autenticación de usuarios?

Respuesta

Nosotros, como desarrolladores de software, tenemos una tendencia por aplicar todo aquello nuevo que encontramos. Por dar un ejemplo: si de pronto nos encontramos con un martillo que no hemos visto antes (a pesar de ser sólo una variante de las muchas que conocemos), comenzamos a ver todo como un "clavo". Sentimos la necesidad de aplicar todo aquello nuevo que vamos aprendiendo (en la gran mayoría de ocasiones). Ahora bien, retomando la pregunta original: • • •

Es importante mencionar que, ni los JWT ni las Cookies constituyen en sí mismos un mecanismo de autenticación. El primero sólo define un formato de token, y el segundo es un mecanismo de gestión de estado para las peticiones HTTP. Sólo con esto determinamos que es incorrecto decir que uno es superior a otro.

Es correcto sin embargo que ambos son ampliamente utilizados en sistemas de autenticación. Tradicionalmente las aplicaciones web han usado cookies (en conjunto con sesiones) para hacer un seguimiento de los usuarios que han iniciado sesión. De esta forma, no necesitan enviar sus credenciales en cada petición. Generalmente, el contenido de una cookie está determinado por un identificador único (generado aleatoriamente). Este ID le permite al servidor encontrar los datos de sesión correspondientes para cada usuario. Sin embargo, en el desarrollo de APIs es más común aceptar tokens (en formato JWT principalmente) para que el servidor decida si otorgar acceso o no a quien está realizado la petición. Esto se debe a que: ✓ Tradicionalmente, el principal tipo de cliente (para visitar aplicaciones web) ha sido el web browser (navegador web), que presenta un soporte completo para cookies. ✓ Pero las APIs hoy en día son usadas también por clientes HTTP mucho más simples, que no soportan cookies de forma nativa. La autenticación basada en cookies es conveniente para los navegadores, pero más allá de ellos, para otros tipos de clientes tiene más sentido un enfoque basado en tokens (ya que estos pueden ser transportados a través de parámetros, encabezados o como parte del cuerpo de las peticiones HTTP). Es decir, si una API admite tokens entonces aumentará el rango de clientes que puede atender, por lo que resulta más conveniente si la API se debe usar más allá de los navegadores web. Hoy en día es posible el uso de cookies en las aplicaciones móviles nativas, pero en resumen: los JWT tienen una ventaja sobre las cookies sólo por el hecho de que su uso

es más común. Siguiendo este enfoque, podemos tener más recursos de aprendizaje, SDKs, información sobre las vulnerabilidades más conocidas, etcétera.

Autenticación basada en tokens VS autenticación basada en cookies y sesiones A continuación, vamos a repasar cómo funcionan las cookies (en conjunto con sesiones) y los tokens, para que luego nos resulte más fácil resaltar las diferencias.

Autenticación basada en cookies La autenticación basada en cookies ha sido el método predeterminado (y comprobado) para manejar la autenticación de usuarios durante mucho tiempo. La autenticación basada en cookies presenta un estado (es stateful). Al iniciar sesión, luego que un usuario envía sus credenciales (y estas se validan), el servidor registra datos (con el fin de recordar que el usuario se ha identificado correctamente). Estos datos que se registran en el backend, en correspondencia con el identificador de sesión, es lo que se conoce como estado. En el lado del cliente una cookie es creada para almacenar el identificador de sesión, mientras que los datos se almacenan en el servidor (y son llamados variables de sesión). El flujo que sigue este sistema de autenticación tradicional es el siguiente: Un usuario ingresa sus credenciales (datos que le permiten iniciar sesión) El servidor verifica que las credenciales sean correctas, y crea una sesión (esto puede corresponderse con la creación de un archivo, un registro nuevo en una base de datos, o alguna otra solución server-side) Una cookie con el session ID es puesta en el navegador web del usuario...


Similar Free PDFs