Authorization Extension en Auth0
Clase 36 de 39 • Curso de Autenticación con OAuth
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 Manager
yVoting Manager
. - Permisos para Playlists Manager:
read:playlists
,create:playlists
ydelete:playlists
. - Permisos para Voting Manager:
read:votes
yreset: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