Saltar al contenido principal
En esta sección revisaremos toda la configuración que debemos aplicar en el Auth0 Dashboard.

Crear la API

Haga clic en la opción del menú APIs de la izquierda y, a continuación, en el botón Create API. Deberá proporcionar los siguientes datos para su API:
  • Nombre: un nombre descriptivo para la API. No afecta a ninguna funcionalidad.
  • Identificador: un identificador único para la API. Recomendamos usar una URL, pero tenga en cuenta que no es necesario que sea una URL de acceso público; Auth0 no llamará a su API en ningún caso. Este valor no se puede modificar posteriormente.
  • : el algoritmo que se utilizará para firmar los tokens. Los valores disponibles son HS256 y RS256. Al seleccionar RS256, el token se firmará con la clave privada del inquilino. Para obtener más información sobre los algoritmos de firma, consulte Signing Algorithms.
Dashboard - Applications - APIs - Create API - Popup
Complete la información requerida y haga clic en el botón Create.

Algoritmos de firma

Cuando creas una API, tienes que seleccionar el algoritmo con el que se firmarán tus tokens. La firma se usa para verificar que el emisor del es quien dice ser y para garantizar que el mensaje no se haya modificado durante el proceso.
La firma forma parte de un JWT. Si no conoces la estructura de un JWT, consulta JSON Web Token Structure.
Para crear la parte de la firma, tienes que tomar el encabezado codificado, la carga útil codificada, un secreto y el algoritmo especificado en el encabezado, y firmarlos. Ese algoritmo, que forma parte del encabezado del JWT, es el que seleccionas para tu API: HS256 o RS256.
  • RS256 es un algoritmo asimétrico, lo que significa que hay dos claves: una pública y una privada (secreta). Auth0 tiene la clave secreta, que se usa para generar la firma, y el consumidor del JWT tiene la clave pública, que se usa para validar la firma.
  • HS256 es un algoritmo simétrico, lo que significa que solo hay una clave secreta, compartida entre las dos partes. La misma clave se usa tanto para generar la firma como para validarla. Debe prestarse especial atención para que la clave siga siendo confidencial.
La práctica más segura, y nuestra recomendación, es usar RS256. Algunas de las razones son:
  • Con RS256 tienes la certeza de que solo el titular de la clave privada (Auth0) puede firmar tokens, mientras que cualquiera puede comprobar si el token es válido usando la clave pública.
  • Con HS256, si la clave secreta compartida se ve comprometida, tendrías que volver a desplegar la API con el nuevo secreto. Con RS256 puedes solicitar un token que sea válido para múltiples audiencias.
  • Con RS256 puedes implementar la rotación de claves sin tener que volver a desplegar la API con el nuevo secreto.
Para obtener una descripción más detallada de los algoritmos de firma de JWT, consulta: JSON Web Token (JWT) Signing Algorithms Overview.

Configurar los permisos

Una vez creada la aplicación, deberá configurar los permisos que las aplicaciones pueden solicitar durante la autorización. En la configuración de su API, vaya a la pestaña Permissions. En esta sección puede agregar los cuatro alcances mencionados anteriormente: read:timesheets, create:timesheets, delete:timesheets, approve:timesheets.
Dashboard - Applications - APIs - Permissions

Crear la aplicación

Hay cuatro tipos de aplicaciones en Auth0: Native App (para aplicaciones móviles o de escritorio), Single-Page Web AppRegular Web App y Machine to Machine App (para CLI, daemons o servicios que se ejecutan en tu backend). En este caso, queremos crear una nueva aplicación para nuestra aplicación móvil, por lo que usaremos Native como tipo de aplicación. Para crear una nueva aplicación, ve al dashboard y haz clic en la opción de menú Applications de la barra lateral izquierda. Haz clic en el botón + Create Application. Asigna un nombre a tu aplicación (usaremos Timesheets Mobile) y selecciona Native App como tipo. Haz clic en Create.

Configurar la extensión Authorization Extension

Asegúrese de que la extensión Authorization Extension esté instalada en su inquilino. Puede consultar la documentación de Authorization Extension para obtener más información sobre cómo hacerlo.

Definir permisos

Deberá definir permisos que se correspondan con los alcances que ya definió. En la Authorization Extension, haga clic en la pestaña Permissions y, a continuación, en el botón Create Permission. En el cuadro de diálogo, introduzca los datos de cada permiso. Asegúrese de que el nombre del permiso sea exactamente el mismo que el del scope correspondiente: Continúe creando los permisos para todos los alcances restantes:

Definir roles

Ve a la pestaña Roles y crea dos roles. Haz clic en el botón Create Role y selecciona la aplicación Timesheets SPA. Asigna al rol el nombre y la descripción Employee, y selecciona los permisos delete:timesheetscreate:timesheets y read:timesheets. Haz clic en Save. A continuación, sigue el mismo proceso para crear el rol Manager y asegúrate de haber seleccionado todos los permisos:
Dashboard - Extensions - Authorization Extension - Create Manager Role

Asignar usuarios a roles

Deberá asignar todos los usuarios al rol Manager o User. Para ello, vaya a la pestaña Users de la Authorization Extension y seleccione un usuario. En la pantalla de información del usuario, vaya a la pestaña Roles. Puede agregar un rol al usuario haciendo clic en el botón Add Role to User y seleccionando el rol correspondiente para ese usuario.

Configuración de la Authorization Extension

También deberá asegurarse de que la Rule de la Authorization Extension esté publicada. Para ello, haga clic en el avatar de usuario en la esquina superior derecha de la Authorization Extension y seleccione la opción Configuration: Asegúrese de haber habilitado Permissions y, a continuación, haga clic en el botón Publish Rule.

Crear una Rule para validar los alcances del token

El último paso de este proceso es crear una Rule que valide que los alcances incluidos en un sean válidos según los permisos asignados al usuario. Cualquier alcance que no sea válido para un usuario debe eliminarse del Token de acceso. En tu , ve a la pestaña Rules. Deberías ver la Rule creada por Authorization Extension. Haz clic en el botón Create Rule y selecciona la plantilla Empty Rule. Puedes asignarle un nombre a la Rule, como Access Token Scopes, y luego especificar el siguiente código para la Rule:
function (user, context, callback) {
  if (context.clientName !== 'Timesheets SPA') {
    return callback(null, user, context);
  }

  var permissions = user.permissions || [];
  var requestedScopes = context.request.body.scope || context.request.query.scope;
  var filteredScopes = requestedScopes.split(' ').filter( function(x) {
    return x.indexOf(':') < 0;
  });
  Array.prototype.push.apply(filteredScopes, permissions);
  context.accessToken.scope = filteredScopes.join(' ');

  callback(null, user, context);
}
El código anterior garantizará que todos los Tokens de acceso solo contengan los alcances con el formato correcto (por ejemplo, action:area o delete:timesheets) que sean válidos de acuerdo con los permisos del usuario. Cuando termines, puedes hacer clic en el botón Guardar. Las Rules se ejecutan en el orden en que se muestran en la página de Rules, así que asegúrate de que la nueva Rule que creaste esté ubicada debajo de la Rule de Authorization Extension para que se ejecute después de la Rule de Authorization Extension. TUTORIAL ANTERIOR 1. Descripción general de la solución SIGUIENTE TUTORIAL 3. Implementación de API + móvil