- 1

OAuth y OpenID Connect: Autenticación y Autorización Básica
05:01 - 2

¿Qué es la autenticación?
03:55 - 3

Autorización y Control de Acceso Basado en Roles
04:01 - 4

Protocolos Open Authorization y OpenID Connect: Alternativas y Comparación
05:32 - 5

Protección de Endpoints con Autenticación y Autorización Básica
11:14 - 6

Flujo de Open Authorization y Open ID con Discord
07:14
Comparación de Sesiones y JSON Web Tokens en Autenticación
Clase 8 de 25 • Curso de OAuth 2.0 y OpenID Connect: Flujos de Autenticación y Casos de Estudio
Contenido del curso
- 11

Implementación de flujos OAuth 2.0 con APIs populares
08:28 - 12

Flujos de Autorización en OAuth 2.0: Conceptos y Funcionamiento
11:55 - 13

Elección del Flujo Oauth 2.0 según Roles del Cliente y Servidor
07:08 - 14

Implementación de Authorization Code Flow con Spotify y React
16:07 - 15

Implementación de Authorization CodeFlow con Proofkit en Twitter API
12:25 - 16

Implementación de Implicit Flow con Twitch en React
07:11 - 17

Implementación de Client Credentials Flow en Discord
05:02 - 18

Implementación de Resource Owner Password Flow con Auth0
08:34 Quiz de Open Authorization 2.0
¿Cómo comparar sesiones y tokens?
El debate entre sesiones y tokens es fundamental para entender la evolución de la autenticación en la web. Las sesiones han sido un pilar por décadas, mientras los tokens han emergido como una solución más moderna y adaptada a las arquitecturas actuales. Pero, ¿qué ventajas y desventajas tienen estos métodos?
¿Cómo funcionan las sesiones?
El flujo de las sesiones comienza cuando el usuario se autentica a través de un formulario. Una vez que el servidor recibe las credenciales y valida al usuario, se crea una sesión. Este proceso implica:
- Creación de la sesión: Un espacio en memoria se habilita para almacenar información relevante del usuario durante su sesión. Cada sesión es única y genera un identificador (ID).
- Uso de cookies: Este ID de sesión se almacena en una cookie, la cual está asociada a los requests del cliente. Cada vez que el usuario interactúa con la aplicación, se envía esta cookie, permitiendo al servidor reconocerlo y mantener la interacción.
Sin embargo, este modelo presenta desafíos en ciertos contextos modernos, como las Single Page Apps (SPA), arquitecturas de microservicios y REST APIs, ya que:
- Las SPA no refrescan del lado del servidor.
- Las REST APIs deben ser stateless, lo que choca con el principio de las sesiones.
- En un entorno de microservicios, gestionar una sesión única en múltiples servidores puede ser complicado y costoso.
¿Qué ventajas ofrecen los JSON Web Tokens (JWT)?
Los JSON Web Tokens surgen como una solución que aborda los inconvenientes mencionados. Su flujo es similar al de las sesiones hasta el punto de autenticación. La diferencia clave radica en que, una vez validado el usuario, en lugar de crear una sesión, se genera un token:
- Firma de un JSON Web Token: El cliente lo almacena y ya puede enviarlo al servidor para solicitar recursos, evitando la necesidad de consumir memoria en el servidor para mantener la sesión de cada usuario.
- Escalabilidad y flexibilidad: Los JWT no ocupan memoria en el servidor, y las SPA pueden usar el token sin depender de actualizaciones de estado del servidor.
Los JWT son especialmente ventajosos en entornos que requieren:
- Autonomía del cliente: Las SPA se benefician enormemente dado que no dependen de la sincronización con el servidor para conocer sus permisos.
- Interacción con múltiples microservicios: Cada servicio no necesita sesiones individuales, solo validar la validez de los tokens.
¿Cuáles son las mejores prácticas?
A pesar de las ventajas, es crucial implementar los tokens de manera segura. Considera estos consejos:
- Almacenamiento seguro: Los tokens deben ser guardados de manera segura, ya sea en memoria o preferentemente en cookies seguras.
- Verificación de permisos: Incluir información sobre los permisos en el token para reducir consultas redundantes a la base de datos.
- Validez y renovación: Implementar un mecanismo para comprobar la validez y renovar tokens, si es necesario.
En resumen, aunque las sesiones han sido eficientes tradicionalmente, los tokens ofrecen un enfoque más adecuado para arquitecturas modernas y aplicaciones web interactivas. Considera estudiar cuándo resulta más conveniente utilizar cada uno según el contexto y tus requerimientos técnicos.