Implementación de la aplicación (Aplicaciones de servidor + API)
Implementación de la aplicación para el escenario de arquitectura Servidor + API
En esta sección del tutorial, profundizaremos en nuestra API y en la aplicación Machine-to-Machine asociada. Para comenzar desde el principio, lee Aplicaciones de servidor con API.
Para simplificar, mantendremos nuestra implementación centrada únicamente en la autenticación y la autorización. Como verás en los ejemplos, la entrada del registro de horas estará codificada de forma fija y la API no la conservará. En su lugar, se limitará a devolver parte de la información.
Un endpoint de API es un URI estático que representa un recurso (colección de datos).Por ejemplo, una API de restaurante podría tener endpoints como /orders y /customers. Una aplicación que se conecta a esta API puede realizar operaciones CRUD (crear, leer, actualizar y eliminar) al llamar a un endpoint de API con el método HTTP asociado (POST, GET, PUT, PATCH o DELETE).Para la API de registros de horas de ExampleCo, deberá configurar un endpoint para crear registros de horas.
Si la API procesa la solicitud correctamente, envía una respuesta con el código de estado HTTP 201 Created y un cuerpo que contiene un objeto JSON con una propiedad message que describe el registro de horas recién creado:
{"message": "Created timesheet 14 for employee 007."}
Para proteger los endpoint(s) de tu API, debes implementar una función de middleware en tu aplicación de API para gestionar los tokens. Esta función comprueba si se incluyó un token en la solicitud a la API, valida el token y luego confirma si se incluyen los alcances necesarios para realizar la acción solicitada.Si se cumplen todos los criterios, la aplicación de API responde con el mensaje mencionado anteriormente. Si hay algún problema con el proporcionado (o no se proporciona en absoluto), la aplicación de API envía una respuesta con el código de estado HTTP 401 Unauthorized.Consulta la implementación enNode.js.
Para obtener un token de acceso sin usar la implementación de ejemplo de nuestra aplicación, llama al endpoint Get Token de la API de autenticación de Auth0 con la siguiente carga útil:
Ahora hemos protegido el endpoint de nuestra API con un token de acceso, pero aún no nos hemos asegurado de que el proceso que llama a la API tenga los permisos necesarios para publicar una nueva entrada de registro de horas.Como se explicó antes, cada token de acceso puede incluir una lista de los permisos que se han concedido a la aplicación. Estos permisos se definen mediante el parámetro de solicitud scope. Para obtener más información sobre cómo configurarlos, consulte el apartado Configurar los alcances.Para nuestro endpoint, requeriremos el alcance batch:upload.Consulte la implementación enNode.js.
Comenzaremos invocando el endpoint de la API /oauth/token de Auth0 para obtener un token de acceso.Para ello, necesitaremos los siguientes valores de configuración, que puede encontrar en la configuración de la aplicación:
Dominio: el dominio de Auth0 y también el identificador de su inquilino. Este valor formará parte de la URL de la API: https://{yourTenant}/oauth/token.
: identificador de la API.
: ID de cliente de la aplicación de Auth0.
: Secreto del cliente de la aplicación de Auth0.
Nuestra implementación debe realizar una operación POST en el endpoint https://{yourDomain}/oauth/token con una carga útil en el siguiente formato: