Authorization Extension en Auth0

Clase 36 de 39Curso 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.

auth-extension.png

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 y Voting Manager.
  • Permisos para Playlists Manager: read:playlists, create:playlists y delete:playlists.
  • Permisos para Voting Manager: read:votes y reset: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:

auth-extension-permissions.png

Creamos los roles y asociamos sus permisos adecuados:

auth-extension-role-editing.png

Creamos los grupos y hacemos clic en el para agregar miembros y asociar los roles:

auth-extension-groups.png

auth-extension-group-details.png

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.

auth-extension-config.png

Mi recomendación es solo publicar los Permissions y luego le damos clic en Publish Rule:

auth-extension-config-details.png

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