Encontré qué tiene OAuth 2.0 que OAuth 1.0 no:
-
Ya no requiere de cliente de las aplicaciones de la criptografía.
-
Sus firmas son mucho menos complicadas.
-
Sus token de acceso son de “corta duración”.
Bienvenida e introducción
Qué aprenderás sobre autenticación con OAuth
Stack de seguridad para aplicaciones modernas
Autenticación
Autorización
JSON Web Tokens
JSON Web Tokens
Autenticación tradicional vs JWT
Configuración inicial de los proyectos
Firmando un JWT
Verificando nuestro JWT firmado y buenas practicas con JWT
Server-Side vs Client-Side sessions
Protegiendo nuestros recursos con JWT
Habilitando CORS en nuestro servidor
Profundizando el concepto de JWKS
OAuth 2.0
Cómo elegir el flujo adecuado para OAuth 2.0
¿Qué es OAuth 2.0?
Conociendo el API de Spotify
Creando los clientes de Spotify y servicios iniciales
Implementando Authorization Code Grant
Usando nuestro access token para obtener nuestros recursos
Implementando Implicit Grant
Implementando nuestro servicio de autenticación
Modificando nuestro Layout
Implementando Client Credentials Grant
Implementando Resource Owner Password Grant
Implementando Authorization Code Grant (PKCE)
Open ID Connect
¿Qué es OpenID Connect?
Implementando OpenID Connect
Preocupaciones con JWT y OAuth 2.0
¿Cuáles son las preocupaciones con JWT?
¿Cuáles son las preocupaciones con OAuth 2.0?
Haciendo uso de Auth0
¿Qué es Auth0?
Auth0 Lock y auth0.js
Universal Login
Social Login con Auth0
Custom Social connection con Spotify
Multifactor authentication
Authorization Extension en Auth0
Consideraciones para producción
Buenas prácticas para el despliegue en producción
Uso de diferentes tenants para producción con Auth0
Cierre del curso
Cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Guillermo Rodas
Cuando guardamos nuestros JWT en el localStorage del navegador, somos vulnerables a ataques de Cross Site Scripting (XSS).
En realidad, debemos tratar estos tokens como si fueran datos de la tarjeta de crédito de nuestros usuarios, nunca deberíamos almacenarlos en ninguna parte, más bien, podemos almacenarlos en memoria (mejor aún si tenemos la posibilidad de utilizar al backend y podemos implementar el flujo de Authorization Code Grant para conservar los datos en la memoria del servidor).
También existen varias alternativas basadas en JWT como JWS, JWE y JOSE, sin embargo, ninguna de ellas es la respuesta definitiva a todos los problemas de seguridad en nuestras aplicaciones, nuestro trabajo NO es asegurarnos de que nuestra tecnología sea la más poderosa, más bien, debemos trabajar con el mejor conjunto de buenas practicas con buenas tecnologías.
El desafio de esta clase es describir las diferencias entre OAuth 1.0 y OAuth 2.0 en la sección de comentarios.
Aportes 15
Preguntas 2
Encontré qué tiene OAuth 2.0 que OAuth 1.0 no:
Ya no requiere de cliente de las aplicaciones de la criptografía.
Sus firmas son mucho menos complicadas.
Sus token de acceso son de “corta duración”.
Los protocolos OAuth1 y OAuth2 son muy diferentes, si bien los dos son usados para el manejo de la autorización. OAuth 2 fue completamente reescrito pudiendo decir así que OAuth2 es un protocolo completamente nuevo.
Diferencias sustanciales:
OAuth2 fue creado en base a la necesidad de usar protocolos de authorization en aplicaciones que no dependen de un browser ya que OAuth1 dependía enteramente de uso de un browser incluso si las aplicaciones eran de escritorio, para usar este protocolo tenías que abrir un browser e iniciar el proceso des authorization de aplicación.
OAuth1 maneja sus propios mecanismos de seguridad sobre SSL y TCL, e implementa sus propios mecanismos para evitar vulnerabilidades, mientras OAuth2 confía toda la responsabilidad en el protocolo https.
Las definiciones de los actores son diferentes, por ejemplo en OAuth2 tenemos: Cliente, Servidor de Autorizción, Servidor de reursos y Dueño de los recursos, mientras en OAuth1 Tenemos Cutomer que sería el equivalente al Cliente, User que sería el equivalente a resource owner y Service provider que sería como el resource owner. Una diferencia también es que OAuth1 no separa los roles de un servidor de recursos y un servidore de authorization.
OAuth1 maneja protocolos de encriptación para firmar llaves lo que puede resultar muy tedioso aveces.
OAuth2 cuenta con más flujos y es más flexible para ser utilizado por diferentes tipos de aplicaciones.
Ya que OAuth1 maneja sus propios protolos de seguridad suele ser más seguro que OAuth2 aunque se tenga la impresión de lo contrario.
OAuth1 maneja sus propios mecanismos de seguridad sobre SSL y TCL, e implemta sus propios mecanismos para evitar bulnaberidades, mientras OAth2 confia toda la responsabilidad en el protocolo https
Auth 2.0
Es un protocolo que define las reglas para acceder a otro servidor
Auth 1.0
Permite la autorización a las aplicaciones pero de un mono mas estándar
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
Aqui pueden encontrar información de los flags para proteger las cookies.
Me volvió el alma al cuerpo al explicar que los Bancos estan protegidos contra ese tipo de ataque que es solo un ejemplo
Si guardo en memoria el token, de igual forma con las developer tools de chrome puede ver ese header que se esta enviando
PASETO: Platform-Agnostic Security Tokens
en el caso que comenta sobre la utilización de redux para almacenar los tokens en memoria, como generarias persistencia sin ponerlo en el localstorage
Diferencias entre OAuth 1.0 y OAuth 2.0:
Excelente clase.
Tengo un api administrativo (donde gestiono el contenido de la pagina, usuarios, ect) y uno publico (donde los usuarios hacen sus publicaciones y ven contenido de otros usuarios), Ambas son SPA…
Como hago para evitar que una persona agarre el token del panel administrativo y lo use desde la otra aplicacion que es solo para realizar publicaciones y ver contenido (y por ejemplo modifiquen el nombre de una categoría desde la aplicación que no es)…?
Uff no pensé que la historia fuera tan interesante, les comparto: https://www.oauth.com/oauth2-servers/differences-between-oauth-1-2/
Tengo un backend en Django REST Framework y un front en Angular 8, Cual de todos los flujos de OAuth debería iplementar?
no me queda claro como enviando el atributo state en la petición se puede evitar CSFR, es decir que hace el backend con esa cadena que enviamos y como el tiene conocimiento de que la cadena fue creada por nosotros? de antemano gracias!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?