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

Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Autorización

4/39
Recursos

La autorización consiste en definir los permisos y limitaciones de los usuarios que han pasado el proceso de autenticación, recuerda no confundir los términos. Este proceso de autorización sucede, por ejemplo, cuando permitimos que una aplicación se conecte a nuestra cuenta de Google, muchas veces no queremos que estas aplicaciones tengan todos los permisos de nuestra cuenta (para enviar o leer los correos, por ejemplo), pero si podemos autorizar otros permisos como la cámara o el calendario.

Esto mismo sucede con nuestras aplicaciones, por ejemplo, algunos usuarios pueden tener permisos para escribir, actualizar o eliminar cierto contenido, mientras que otros solo pueden visualizar e interactuar con estas publicaciones.

El desafío de esta clase es buscar y describir en la sección de comentarios una o más librerías que nos permitan realizar ambos procesos: autenticación y autorización.

Aportes 79

Preguntas 2

Ordenar por:

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

👮 Autenticación 🆚 Autorización 🤖

El proceso de autenticación consiste en identificar a los usuarios, quién es, cómo se viste, es o no buena gente, etc:

😬 User: Hey! Soy Fulano de Casi Creativo y quiero entrar a …
👮 Autenticación: ¡No me digas a dónde! Yo solo me encargo de identificarte. ¿Qué método de autenticación te gustaría utilizar? Nuestra ultima actualización nos permite identificarte con mensajes de texto 😃
😬 User: Ehh, ¿Email y password?
👮 Autenticación: Ok. 😒 ¬¬
😬 User: Email: "[email protected]" y password “c.ntrasena m.y s.gura123!!".
👮 Autenticación: Credenciales incorrectas, tu correo electrónico no esta registrado en nuestra aplicación, inténtalo de nuevo o puede regis…
😬 User: Email: "[email protected]" y password "c.ntrasena m.y s.gura123!
!”.
👮 Autenticación: Bienvenido. Por favor, guarde este token en el localStorage de su navegador y diríjase a Mr. Autorización que le indicará los lugares a donde tiene acceso, buen viaje 😃

Por otra parte, la autorización consiste en definir los permisos y limitaciones de los usuarios ya identificados:

😬 User: ¿Qué tal brother? Soy Fula…
🤖 Autorización: 🔥¡Token!🔥
😬 User: Oh claro, el token 🤔, bueno en fin, aquí tiene. Vengo para saber a dónde …
🤖 Autorización: Tiene permiso para visualizar su perfil y el de sus amigos pero no puede editar sus datos porque no ha entrado a link de verificación que le mandamos al correo HACE DOS DÍAS.
😬 User: Claro, claro. No se preocupe que apenas llegue a la casa reviso el…
🤖 Autorización: Buen viaje.
😬 User: Gracias pero, mi número de teléfono esta mal, ¿no puedo editarlo rápido y despues ya lo…
🤖 Autorización: No.
😬 User: Pero yo…
🤖 Autorización: No.
😬 User: Ok 😒.

Ejemplos de plataformas para realizar autenticacion y autorizacion son:

  • Auth0 (Link a la documentacion): Provee una plataforma universal de autenticacion y autorizacion para aplicacion web, moviles y legacy.

    Tiene soporte para aplicacion nativas y moviles (Android, iOS, etc), Single Page Apps (Vue.js, React, Angular), aplicaciones web (en los lenguajes mas populares: Java, Python, Node.js, Go) y para Backend’s Web/API’s (Django, Node.js, Go, Python, etc).

  • Okta (Link a la documentacion): Es una plataforma para autenticacion, autorizacion y administracion de usuarios en aplicaciones/API’s web y moviles.

    Tiene soporte para plataformas moviles (Android, iOS y React Native), lenguajes de Frontend (Javascript, Vue.js, React, Angular) y lenguajes de Backend (Node.js, Java, .NET, Go).

  • Passport.js (Link a la documentacion): Es un middleware de Node.js para autenticacion. Esta diseñado para un proposito simple: autenticar los requests que llegan al servidor.

Challenge:
GoogleAuthenticator: Muy útil para realizar autenticación de doble factor.
express-session: Es parte de express para node y permite realizar ambas funiones, autenticar y autorizar.
Passport framework: permite implementar más de 30 estrategias de autenticación, incluyendo OpenID y OAuth.

Entiendo entonces que autenticar es la acción o en este caso proceso donde se confirma que efectivamente es la persona y autorización son los permisos otorgados y limites establecidos para acciones.

Algunas librerias gratis:

  1. Passport JS
  2. Permit
  3. Grant
  4. Feathers
  5. Firebase Authentication

https://www.ma-no.org/es/programacion/javascript/librerias-javascript-gratis-para-la-autenticacion-de-usuarios

  1. keycloak-js
  2. passport-auth2
  3. passport-local

En Python encontré:
Autenticación: Authlib
Autorización: Requests-OAuthlib

Para Java Spring Security es la librería.

OAuth 2.0 :Librería de autorización que le permite a las aplicaciones obtener acceso de una API de modo estándar y simple, para aplicaciones de escritorio, móviles y web; proporciona flujos de autorización para aplicaciones.

Autenticación: Librería de autenticación => JSON Web Tokens (JWT). El formato JSON es agnóstico del lenguaje!

Spring Security maneja estos dos conceptos, Authentication y Authorization.

Autorización es el control que se ejerce a los usuarios ya autenticados sobre los niveles de acceso a los recursos de un sistema.

Me llamo mucho la propuesta de esta blog, que en resumen propone el uso de Blockchain para autenticacion

Autenticación => ¿Quién Eres?
Autorización => ¿Qué puedo hacer?

  • ++Passport ++ es un middleware de autenticación compatible con Express para Node.js.
  • Permit permite añadir una capa o layer de autenticación a cualquier API de Node.js.
  • Grant Una biblioteca relativamente nueva y prometedora con más de 180 proveedores compatibles y un playground para Express, Koa y Hapi con OAuth Middleware.
  • ++ Feathers++ framework web de código abierto para NodeJS que te permite controlar sus datos a través de recursos RESTful, sockets y plug-ins flexibles en tiempo real.
  • ++ Firebase Authentication++ sistema de gestión de usuarios. Puede guardar algunos datos básicos, ofrecer múltiples métodos de acceso (correo electrónico/contraseña, Google, Facebook…).

Para Ruby on Rails:

Autenticación:

Autorización:

Spring Security este Framework utiliza estos dos servicios de Autenticacion y Autorizacion.

yo soy java developer y el mas famoso para nosotros es el spring security ya que el maneja los 2 modos

uno para autentificacion
y otro para autorización atreves de roles .

JAAS Java Authentication and Authorization Service, es una interfaz
que permite a las aplicaciones Java acceder a servicios de control de
autenticación y acceso

En el mundo Java existe spring-security

Hay servicios como Firebase Authetication y de AWS Amazon Cognito

Las librerías para NodeJS que encontré son:

  • Autenticación: passport
  • Authorización: node-oauth20-provider

Otra librería muy buena para autenticación con ruby on rails es authlogic, me tocó usarla en algunos proyectos y permite hacer muchas integraciones con otras tecnologías como servidores de directorios de ldap o authenticación con cuentas de microsoft

Passport JS - Firebase Authentication

para node js esta passport js como una libreria de autenticación

ui-auth : Librería que ofrece helpers para autenticación y autorización vía securium-oauth.

https://github.com/codiumsa/ui-auth

Solo autenticacion :

cloudRail :

En python : REQUEST
En java: Spring-security

Java -> Spring Security: Framework para java que proporciona autenticación, autorización.
Node -> Passportjs: Autenticacion middleware para Node

Esto me recuerda mucho a “El usuario con el menor privilegio”

Reto:
Autenticación: Firebase Authentication / Permit
Autorización: VueJs / Rubyonrails

En Linux tenemos Linux-PAM Módulos
de Autentificación Conectables en un sistema Linux. PAM es un juego de librerías compartidas que habilitan al administrador local del sistema para escoger el modo en que los programas autentificarán a los usuarios

Autenticación: Passport JS, Grant, Firebase authentication
Autorización: CanCanCan, Pundit.

Authentication: Passport JS, Permit, Feathers authentication management, Firebase Authentication.
Athentication and Autorization: Auth0

Passport JS y Firebase

Autenticación: Passport JS y Permit

Autorización son los tipos de accesos que se le da a un usuario.

En .net hay una “libreria” denominada ASP.NET Identity

En nextjs esta next-auth que forma parte de la familia de auth.js, que justo usan OAuth como estandar

Firebase Authentication
Passport JS

Para autenticación Spring Security y autorización JWTAuthorizationFilter

Para autenticación existe Passpor.JS
Para autorización: express-basic-auth

Autorización y autenticación:
Java Spring Security
Python Flask

Yo si pensé que eran los mismo.
Auten

  1. Passport JS
  2. Permit
    Auto
  3. CASBIN
    2.Open Policy Agent (OPA)

Algunos Frameworks para la Autenticación y Autorización

Estos ejemplos los busqué para JavaScript:

  • PassportJS
  • Permit
  • Grant
  • Feathers
  • Firebase Authentication

Challange:

Como ejemplos de librerieas para autenticación tenemos Passport JS y Firebase Authentication.

Como ejemplo de librerías para autorización podemos usar Next Auth.

Python:
Autenticación: requests,authlib
Autorización: authomatic, urllib2

Hola… viva OpenId

Para autenticación PERMIT y para autorización …

Passport para javascript
Django internamente tambien lo maneja

Autenticacion: Azure B2C
Autorizacion: Azure B2C con OAuth 2.0

Autenticación: verifica las identidades, quien entra
Autorización: verifica los permisos que corresponden a cada identidad. Que puede hacer

Autorización:

  • Oauth 2.0
  • Autorizacion JWT

Authlib: Python Authentication
Auth0 and express for JS

para la autenticación uso generalmente** laravel-passport**: Es el módulo oficial de Laravel que nos ayuda a la implementación de servicios de autenticación haciendo uso del protocolo OAuth2. Además, otra de las características de Laravel Passport es la implementación de JWT como estándar en la generación de tokens.

y para la autorizacion uso CASL (pronunciado / ˈkæsəl /, como castillo ) es una biblioteca JavaScript de autorización isomórfica que restringe los recursos a los que se permite acceder a un cliente determinado. Está diseñado para ser adoptado gradualmente y puede escalar fácilmente entre una autorización simple basada en reclamos y una autorización basada en atributos y sujetos con todas las funciones. Facilita la administración y el intercambio de permisos entre los componentes de la interfaz de usuario, los servicios de la API y las consultas de la base de datos.

Challenge:
Passport JS -> La API es simple: se proporciona a Passport una solicitud de autenticación, y Passport proporciona los hooks/ganchos para controlar lo que ocurre cuando la autenticación tiene éxito o falla.
Permit-> permite autenticarse a través de los dos esquemas que la mayoría de las APIs necesitan: un único token secreto o un conjunto de credenciales de nombre de usuario y contraseña.
Firebase Authentication -> proporcionar a tus usuarios privilegios de lectura/escritura a través de reglas de seguridad.

Autenticacion, podria utilizarse Passport.js o Permit.
Para autorizacion podria utilizarse CASL o graphql-authorize o Apollo Federation
Aunque siempre podemos recurrir a auth0, aunque sea de pago es interaseante.

5 librerias para la autenticación de usuarios:
Passport JS
Permit
Grant
Feathers
Firebase Authentication

Microsoft.AspNetCore.Identity,
IdentityServer4

Autenticacion : Passport Js y MSAL para Azure
Autorizacion: AS/400 - IBM i y ASP .NET Identity

autenticacion: PASSPORT JS
en java Spring Security

Autenticación: Passport JS, Permit, Grant

La autorización tanto como en aplicaciónes web o en otros medios es importante. Me recuerda cuando se hace pruebas de penetracion a servidores Linux donde de acuerdo a la autorizacion y permisos dados por el administrador podemos hacer escalacion de privilegios!

Encontré devise para auntenticacion en ruby on rails y cancancan para autorización

Autorización: es la acción de otorgar permisos a un usuario con acceso limitado.

La autenticación es un tema muy importante, actualimente estoy desarrollando una aplicación en Flutter y he encontrado librerías y paquetes que facilitan este proceso como Dart Auth y como saben Flutter facilita mucho el tema de desarrollo en muchos sentidos.

muy buen modulo

Autenticación: Firebase Authentication y Feathers
Autorización: AS/400 y VueJs

Firebase Authentication: ()

Auth0: Muy costoso!

En el mundo del framework Symfony utilizabamos FosUserBundle para la autenticación. Para la Autorización utilizamos el archivo de seguridad y las anotaciones de las rutas del framework

Autenticación: Passport Js y Permit
Autorización: VueJs y RubyOnRails

Autenticación: Passport JS / Permit

Passport

En java tenemos:
Para autenticación -> google-auth-library-java
Para autorización -> jcasbin

Alguien sabe que se puede usar con Django para el tema de la Autenticación y Autorización??

Frameworks para autenticación

  1. Passport
  2. Auth0
    Frameworks para autorización
  3. Seam
  4. Auth0

Librerías de autenticación y autorizacion :
Passport JS.
Permit.
Grant.
Feathers.
Firebase Authentication.

Librerías para autenticación:

  • Passport.js

  • Firebase authentication

Librerías para autorización:

  • Auth0 (aunque sirve para ambos usos)

las dos librerías consultadas son PERMIT y Feathers

  1. Passport.js
  2. Firebase Authentication

Excelente!! 💪