Bienvenida e introducción

1

Qué aprenderás sobre autenticación con OAuth

2

Stack de seguridad para aplicaciones modernas

3

Autenticación

4

Autorización

JSON Web Tokens

5

JSON Web Tokens

6

Autenticación tradicional vs JWT

7

Configuración inicial de los proyectos

8

Firmando un JWT

9

Verificando nuestro JWT firmado y buenas practicas con JWT

10

Server-Side vs Client-Side sessions

11

Protegiendo nuestros recursos con JWT

12

Habilitando CORS en nuestro servidor

13

Profundizando el concepto de JWKS

OAuth 2.0

14

Cómo elegir el flujo adecuado para OAuth 2.0

15

¿Qué es OAuth 2.0?

16

Conociendo el API de Spotify

17

Creando los clientes de Spotify y servicios iniciales

18

Implementando Authorization Code Grant

19

Usando nuestro access token para obtener nuestros recursos

20

Implementando Implicit Grant

21

Implementando nuestro servicio de autenticación

22

Modificando nuestro Layout

23

Implementando Client Credentials Grant

24

Implementando Resource Owner Password Grant

25

Implementando Authorization Code Grant (PKCE)

Open ID Connect

26

¿Qué es OpenID Connect?

27

Implementando OpenID Connect

Preocupaciones con JWT y OAuth 2.0

28

¿Cuáles son las preocupaciones con JWT?

29

¿Cuáles son las preocupaciones con OAuth 2.0?

Haciendo uso de Auth0

30

¿Qué es Auth0?

31

Auth0 Lock y auth0.js

32

Universal Login

33

Social Login con Auth0

34

Custom Social connection con Spotify

35

Multifactor authentication

36

Authorization Extension en Auth0

Consideraciones para producción

37

Buenas prácticas para el despliegue en producción

38

Uso de diferentes tenants para producción con Auth0

Cierre del curso

39

Cierre del curso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Server-Side vs Client-Side sessions

10/39
Recursos

Autenticar usuarios desde de lado del servidor es considerado stateful, debemos utilizar sesiones para preservar los estados de autenticación, es decir, guardamos en memoria o en una base de datos un identificador que nos permita comprobar si los usuarios están o no autenticados.

Por otro lado, la autenticación de lado del cliente no utiliza sesiones, en realidad, no tenemos forma de verificar si los usuarios están autenticados o no, en vez de esto, validamos los datos de usuario para obtener tokens (con límite de tiempo) que utilizamos en las peticiones al servidor para validar el acceso y consultar nuestra información.

Proceso de autenticación de lado del cliente:

  1. Cuando los usuarios hacen login, el servidor responde con un token (indicando que el login fue exitoso) y nosotros, de lado del cliente, agregamos una bandera para indicar que el usuario esta autenticado.
  2. En cualquier punto de nuestra aplicación (por ejemplo, cuando cambiamos de ruta o hacemos una nueva petición) debemos verificar la expiración de los tokens.
  3. Si el token expira, debemos cambiar la bandera para indicar que el usuario NO esta autenticado y nuevamente redireccionar a los usuarios a la ruta de login.

Aportes 5

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Notas de la clase:

  • Las sesiones del lado del servidor funcionan almacenando un indicador en memoria o en la base de datos, cuando este indicador desaparece, significa que el usuario ya NO esta autenticado 👍
  • Estos indicadores viajan (normalmente) a través de cookies, el servidor lo envia al navegador y el navegador lo envía de vuelta al servidor 🔂
  • Del lado del cliente NO utilizamos sesiones 😮
  • En Single Page Applications NO tenemos forma de verificar la autenticación de los usuarios, tendríamos que refrescar la página cada vez que necesitamos nueva información y básicamente se pierde el chiste, así no funcionan estas aplicaciones 😦
  • En vez de sesiones utilizamos tokens, enviamos los datos de autenticación de nuestros usuarios al servidor y, si los datos son correctos, el servidor devuelve un token, una llave que nos da acceso por algún tiempo a la información autorizada de los usuarios 🎉👌
  • Si en alguna de las peticiones al servidor nos informan que el token ha expirado pos, volvemos a hacer login y seguimos como si nada 😅💪

Esto lo veo más como para un sistema de autenticación de un banco, porque sería realmente algo malo estarle mostrando cada 15 minutos un mensaje al usuario de “Su sesión ha expirado”, imagino que para este caso se usan otras cosas como los Personal Acess Token 🤔

PLatzi usa Web tokens??

¿No hay forma de refrescar el token? En la forma tradicional expiramos una sesión cuando hay inactividad en el uso de la app. Pero con jwt estamos estableciendo que el token expira en un tiempo determinado sin importar si hay actividad en la navegación de nuestra aplicación, por lo que si el usuario esta gestionando algo, al pasar el tiempo, se expirará su autenticación.

buena explicación.