Authorization Extension en Auth0
Clase 36 de 39 • Curso de Autenticación con OAuth
Contenido del curso
JSON Web Tokens
- 5

JSON Web Tokens
08:34 min - 6

Autenticación tradicional vs JWT
08:08 min - 7

Configuración inicial de los proyectos
08:22 min - 8

Firmando un JWT
15:23 min - 9

Verificando nuestro JWT firmado y buenas practicas con JWT
11:43 min - 10

Server-Side vs Client-Side sessions
05:23 min - 11

Protegiendo nuestros recursos con JWT
04:38 min - 12

Habilitando CORS en nuestro servidor
01:11 min - 13

Profundizando el concepto de JWKS
02:24 min
OAuth 2.0
- 14

Cómo elegir el flujo adecuado para OAuth 2.0
02:54 min - 15

¿Qué es OAuth 2.0?
00:15 min - 16

Conociendo el API de Spotify
07:29 min - 17

Creando los clientes de Spotify y servicios iniciales
16:46 min - 18

Implementando Authorization Code Grant
14:54 min - 19

Usando nuestro access token para obtener nuestros recursos
07:12 min - 20

Implementando Implicit Grant
09:11 min - 21

Implementando nuestro servicio de autenticación
08:46 min - 22

Modificando nuestro Layout
09:18 min - 23

Implementando Client Credentials Grant
09:52 min - 24

Implementando Resource Owner Password Grant
01:46 min - 25

Implementando Authorization Code Grant (PKCE)
02:26 min
Open ID Connect
Preocupaciones con JWT y OAuth 2.0
Haciendo uso de Auth0
Consideraciones para producción
Cierre del curso
Authorization Extension otorga soporte de autorización para el usuario vía Grupos, Roles y Permisos. Se pueden definir comportamientos esperados durante el proceso de login mediante el uso de reglas.
También se puede guardar los datos de los grupos, roles y permisos en el Access Token generado por Auth0. Así, nuestra aplicación puede tomar esta información del token y tomar acciones basadas en el contexto actual de autorización.
Actualmente los roles y permisos son creados por aplicación (Cliente), así que si se necesitan los mismo roles y/o permisos en otra aplicación se deben crear de manera separada.
Instalación
Asegúrate de que ya tienes una aplicación existente, la extensión se puede usar con los siguientes tipos de aplicación:
- Native
- Regular Web app
- Single Page app
Para instalar la aplicación en el dashboard administrativos nos dirigimos a la sección de extensiones allí seleccionamos Auth0 Authorization.
Nos aparecerá un popup para generar su instalación y nos preguntará donde queremos guardar la información, seleccionaremos Webtask Storage.
Después de instalada podremos verla en la pestaña de Installed Extensions. Hacemos clic y la primera vez nos preguntará por los permisos que necesita la app para acceder a Auth0. Aceptamos y podremos ver el dashboard de autorización.
Configuración
Para empezar con nuestra configuración inicial debemos crear los Grupos, Roles y Permisos de nuestra aplicación. A grandes rasgos los Permisos son los que nos permiten identificar si el usuario esta autorizado para acceder a un recurso o no. Los Roles son simplemente un conjunto de Permisos y los Grupos son un conjunto de Roles.
Por ejemplo podríamos tener la siguiente jerarquía:
- Grupo:
Admin: - Roles:
Playlists ManageryVoting Manager. - Permisos para Playlists Manager:
read:playlists,create:playlistsydelete:playlists. - Permisos para Voting Manager:
read:votesyreset:votes.
Para crear los Grupos, Roles y Permisos es necesario acceder a las diferentes opciones en el menú lateral izquierdo. Una vez creada nuestra estructura podemos agregar nuestros usuarios a los grupos creados.
Creamos todos los posibles permisos:
Creamos los roles y asociamos sus permisos adecuados:
Creamos los grupos y hacemos clic en el para agregar miembros y asociar los roles:
Para publicar nuestra configuración en los tokens generados lo que debemos hacer es hacer clic en el menú superior derecho en el nombre de nuestro tema y después en Configuration.
Mi recomendación es solo publicar los Permissions y luego le damos clic en Publish Rule:
Con estos hemos configurado los permisos para nuestros usuarios. A partir de esto lo que podemos hacer es consultar los scopes en el authResult (El resultado del llamado this.auth0.parseHash) otorgado por Auth0 y dependiendo de los permisos podemos variar los elementos de nuestra UI o agregar validaciones a nivel de nuestros endpoints.
Para revisar un ejemplo de la implementación en Angular puedes dirigirte [aquí](https://auth0.com/docs/architecture-scenarios/application/spa-api/spa-implementation-angular2#4-display-ui-elements-conditionally-based-on-scope