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

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Verificando nuestro JWT firmado y buenas practicas con JWT

9/39
Recursos

Gracias a la librer铆a jsonwebtokens tambi茅n podemos validar nuestros JWT utilizando el m茅todo jwt.verify(), en esta clase vamos a crear un nuevo endpoint (/api/auth/verify) donde debemos devolver el el nombre de usuario que encontramos si el token que verificamos es valido. En caso de que el token no sea valido, vamos a devolver un error utilizando el m茅todo next() de la librer铆a express.

Buenas pr谩cticas al utilizar JWT:

  • Nunca transmitir informaci贸n sensible: Recuerda que los JWT son completamente decodificables, su seguridad no esta en la encripci贸n de datos que transmitimos por los tokens sino en la validaci贸n frente a nuestros servidores. Toda la informaci贸n que transmitimos por JWT debe ser tratada como si fuera enviada por texto plano.
  • Mantener los tokens peque帽os: Los JWT NO son un medio de transmisi贸n de datos, su 煤nica responsabilidad es verificar la autenticaci贸n de nuestros usuarios. para obtener la informaci贸n de nuestros usuarios debemos crear nuevos endpoints en la API de nuestra aplicaci贸n que, por su puesto, solo deben ser disponibles si enviamos un token valido.
  • Configurar tiempos de vida de muy cortos: El tiempo de vida de nuestros tokens son el tiempo en que podemos utilizarlos, la recomendaci贸n son m谩ximo 15 minutos. Entre m谩s grande sea este tiempo, m谩s tiempo tienen quienes quieran cometer ataques a nuestra aplicaci贸n.
  • Crear JWT opacos: Nunca es una buena idea decodificar nuestros tokens desde el cliente o frontend de nuestra aplicaci贸n, recuerda que este c贸digo es completamente p煤blico y corremos el riesgo de que alguien m谩s acceda a las llaves privadas de nuestra aplicaci贸n.

Aportes 9

Preguntas 7

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Pregunta, si yo hiciera caducar los tokens cada 15 minutos, como podria implementar una sesion de larga duracion para un cliente?

En mi trabajo siempre se est谩n quejando de que las sesiones duran muy poco, 鈥淪E脩ORES TENGO 4HRs鈥 de session y ellos quieren que dure todo un d铆a!

platzi, igual como la mayoria de servicios no usan jwt? o es que lo guardan en algun lugar k no sea local storage?

Curioso, hay una librer铆a para PHP llamada Laravel Passport, s茅 que est谩 librer铆a usa por debajo a la librer铆a de JWT para PHP, aunque lo que se me hace curioso es que los Personal Access Tokens tienen una duraci贸n m铆nima de un a帽o, no s茅 cual sea la diferencia entre un Personal Access Token y un JWT鈥

He tratado de buscar por todos lados a que se refiere espec铆ficamente la palabra Opaco, es alg煤n mecanismo, es alg煤n est谩ndar, es alg煤n algoritmo, es solo una definici贸n para un concepto, debe seguir alguna convenci贸n, existen alguna forma de
determinar si un token es opaco o no.

Pregunta: Es recomendable usar JWT para las pruebas donde tengo una key muy sencible, no guarda esos token la pagina?, habria una soluci贸n de paga similar o mejor?

JWT Format

[Base64-URL encoded header].[Base64-URL encoded payload].[Signature]

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o

  1. Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

  2. Payload: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.

  3. Signature XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o

Esta validaci贸n del token incluye la duraci贸n? En caso de estar expirado falla??

Buenas, creo que todav铆a no me queda claro en que se utilizar铆a el json web token, o este tipo de validaciones, en que ejemplo pr谩ctico se utilizar铆a?