- Confirmarán que el token de acceso se haya enviado a través del encabezado
authorizationde la solicitud para acceder a la API. - Verificarán la firma RS256 del Token de acceso mediante una clave pública obtenida a través de un endpoint JWKS.
- Garantizarán que el token de acceso incluya las claims requeridas de emisor
issyaud.
- Crear una API de Auth0
- Importar e implementar la API de AWS API Gateway
- Crear los autorizadores personalizados
- Proteger la API mediante autorizadores personalizados
- Probar tu implementación
300 segundos y la duración máxima del almacenamiento en caché es de 3600 segundos (también puede establecer el valor en 0 para deshabilitar el almacenamiento en caché).
Para obtener más información, visite ¿Qué es Amazon API Gateway? en la Guía para desarrolladores de Amazon. Para obtener más información sobre la verificación de , consulte nuestro artículo sobre JSON Web Token.
Requisito previo
Crear una API de Auth0
- Vaya a Auth0 Dashboard > Applications > APIs y seleccione Create API.
-
Introduzca los valores de los siguientes campos y seleccione Create.
Campo Descripción Nombre Un nombre descriptivo para su API. Este es el nombre que verá en su lista de API de Auth0. Identifier Un identificador lógico para su API. Recomendamos dar a este identificador el formato de una URL https://your-api-gateway.Signing Algorithm El algoritmo que desea que Auth0 use para firmar el token de acceso emitido. Para obtener más información, consulte Signing Algorithms.

Importar e implementar la API de API Gateway de AWS
Esta parte del tutorial se ha adaptado del ejemplo oficial de AWS. Consulta este ejemplo para obtener notas y explicaciones detalladas.
- Importar una API en API Gateway
- Probar la importación de una API
- Implementar una API para usarla con cualquier aplicación de front-end
- Probar la implementación de una API
Importa y configura la API de Pets
- Inicia sesión en tu cuenta de AWS y, en el menú desplegable Services de la barra de navegación superior, ve a la consola de API Gateway.
-
Si ya has creado una API, simplemente ve a la consola de API Gateway y haz clic en Create API. Se te ofrecerá la opción de crear la Example API en el formulario Create new API.
Si nunca has creado una API con API Gateway, verás la siguiente pantalla. Haz clic en Get Started para continuar.
Verás una ventana emergente de bienvenida a API Gateway. Haz clic en OK para continuar.

-
En el formulario Create new API, verás que Example API está seleccionada de forma predeterminada y que hay una API de ejemplo definida en el editor. Usaremos esta API durante el resto del tutorial, así que inicia el proceso de creación haciendo clic en Import.
Cuando termines, AWS mostrará un mensaje indicando que tu API se ha creado y se ha completado con los datos proporcionados. Ten en cuenta que la API ya tiene métodos asociados (en concreto,

GETyPOST). Puedes ver los detalles de un método, modificar su configuración o probar su invocación haciendo clic en el nombre del método en el árbol de recursos.
Pruebe la API
/pets. Esto abre la ventana Method Execution, que ofrece una visión general de la estructura y el comportamiento del método POST:
- Method Request y Method Response: la interfaz de la API con el frontend
- Integration Request y Integration Response: la interfaz de la API con el backend
-
Haga clic en Test (se muestra en la pestaña Client, ubicada en el centro de la página). Se le redirigirá a la página
/pets - POST - Method Test. Desplácese hasta la parte inferior de la página y proporcione el siguiente fragmento como Request Body:El cuerpo de la solicitud indica los atributos de la mascota que desea agregar a la base de datos, así como su costo.
-
Haga clic en Test para continuar. Verá los resultados de la prueba en el lado derecho de la página.

Implementar la API
- En el menú Actions, selecciona Deploy API.
-
Introduce los siguientes valores y haz clic en Deploy.
Parámetro Valor Deployment stage Elige [New Stage]Stage name Indica un nombre para tu fase Stage description Indica una descripción para tu fase Deployment description Indica una descripción para la implementación de la API
Probar la implementación
-
En la parte superior de la ventana del Test Stage Editor hay un banner azul con tu Invoke URL. Esta es la URL que se usa para invocar el endpoint
GETde tu API. Haz clic en el enlace para enviar en el navegador la solicitud del métodoGET /. Esto debería dar como resultado la siguiente respuesta de éxito:
-
En la página Stages, expande el árbol que aparece bajo Test. Haz clic en GET debajo de
/pets/{petId}.
-
Verás una Invoke URL en el banner azul de la parte superior de la ventana. La parte final,
{petID}, representa una variable de ruta. Sustituye esta variable por1y abre la nueva URL en tu navegador. Deberías recibir una respuesta HTTP 200 con la siguiente carga útil JSON:
- API Gateway comprueba si hay un autorizador personalizado configurado correctamente.
- API Gateway invoca al autorizador personalizado (que es una función Lambda) con el token de autorización.
- Si el token de autorización es válido, el autorizador personalizado devuelve las políticas adecuadas de AWS Identity and Access Management (IAM).
- API Gateway usa las políticas devueltas en el paso 3 para autorizar la solicitud.
- Descomprime la carpeta que contiene los archivos de ejemplo que descargaste antes en la ubicación que prefieras y ve a esa carpeta desde la línea de comandos.
-
Dentro de la carpeta de ejemplo, ejecuta
npm installpara instalar los paquetes de Node.js necesarios para la implementación; AWS requiere que estos archivos se incluyan en el paquete que subirás a AWS en un paso posterior. -
Configura tu entorno local con un archivo
.env. Puedes copiar el archivo.env.sample(y cambiarle el nombre a.enval mismo tiempo) concp .env.sample .env. Realiza los siguientes cambios:Como ejemplo, el contenido de tu archivoParámetro Valor TOKEN_ISSUEREl emisor del token. Si Auth0 es el emisor del token, usa https://{yourDomain}/. Asegúrate de incluir la barra diagonal final.JWKS_URILa URL del endpoint JWKS. Si Auth0 es el emisor del token, usa https://{yourDomain}/.well-known/jwks.jsonAUDIENCEEl valor de identifier de la API que creaste en la sección Create an Auth0 API anterior. .envdebería verse más o menos así cuando esté completo:
- Puede obtener un token de prueba para su API yendo a Auth0 Dashboard > Applications > APIs, seleccionando su API y haciendo clic en Test.
- Cree un archivo local
event.jsonque contenga el token. Puede copiar el archivo de ejemplo (ejecutecp event.json.sample event.json). ReemplaceACCESS_TOKENpor su token JWT ymethodArnpor el valor de ARN correspondiente al métodoGETde su API.
methodArn:
- En la consola de API Gateway, abra la API PetStore.
- En el panel de navegación de la izquierda, seleccione Resources.
- En el panel central Resources, expanda el árbol de recursos. Debajo de
/pets, seleccione GET. - En el cuadro Method Request, verá el ARN.
- Ejecute la prueba con
npm test.
Effect es Allow, el autorizador habría permitido la llamada a API Gateway.
Para obtener más información, visita Lambda-local en NPM.
Crear el rol de IAM
- Inicie sesión en AWS y vaya a la Consola de IAM. En el panel de navegación izquierdo, seleccione Roles.
- Seleccione Create new role.
- En AWS service, seleccione la fila AWS Lambda y, a continuación, Next: Permissions.
- En la pantalla Attach permissions policy, seleccione AWSLambdaRole. Puede usar el filtro proporcionado para acotar la lista de opciones. Seleccione Next: Tags y luego Next: Review para continuar.
-
En la pantalla Review, indique un Role name, como
Auth0Integration. Deje el resto de los campos tal como están. Seleccione Create role. - Una vez que AWS haya creado el rol, se le redirigirá de nuevo a la página Roles de IAM. Seleccione el nuevo rol.
- En la página Summary del rol que acaba de crear, seleccione la vista Trust relationships.
-
Seleccione Edit trust relationship y complete el campo Policy Document con el siguiente fragmento JSON:
- Haga clic en Update Trust Policy.
-
Se le redirigirá de nuevo a la página Summary. Copie el valor de Role ARN para usarlo más adelante.

-
Cree un paquete que pueda cargar en AWS ejecutando
npm run bundle. Esto genera un archivocustom-authorizer.zipque contiene el código fuente, la configuración y los módulos de Node necesarios para AWS Lambda. - Vaya a la consola de Lambda y haga clic en Create function.
-
En la página Select blueprint, haga clic en Author from scratch para crear una función vacía. En Basic information, proporcione valores para los siguientes parámetros:
Parámetro Valor Name Un nombre para su función Lambda, como jwtRsaCustomAuthorizerDescription Una descripción para su función Lambda (opcional) Runtime Seleccione Node.js 10.x - Haga clic en Create Function para continuar.
- En la página Configuration de su función, desplácese hacia abajo hasta la sección Function Code.
- Seleccione Upload a .ZIP file como Code entry type.
-
Haga clic en Upload y seleccione el archivo
custom-authorizer.zipque creó anteriormente. -
Luego, cree las siguientes tres Environment variables. Tenga en cuenta que esta información es idéntica a la del archivo
.env.Parámetro Valor TOKEN_ISSUEREl emisor del token. Si Auth0 es el emisor del token, use https://{yourDomain}/JWKS_URILa URL del endpoint de JWKS. Si Auth0 es el emisor del token, use https://{yourDomain}/.well-known/jwks.jsonAUDIENCEEl valor de identifier de la API que creó en el paso 1. - En la sección Execution role, seleccione Use an existing role y luego seleccione el rol de IAM que creó anteriormente como Existing role.
- En Basic settings, establezca Timeout en 30 segundos.
- Haga clic en Save.
- Para probar la función Lambda que acaba de crear, haga clic en Test en la esquina superior derecha.
-
Copie el contenido de su archivo
event.jsonen el formulario Configure test event. Puede usar la plantilla de evento predeterminada “Hello World”. - Haga clic en Create.
-
Ejecute la prueba seleccionándola y haciendo clic en Test. Si la prueba se realizó correctamente, verá: “Execution result: succeeded”. Al expandir la ventana de salida, debería mostrarse un mensaje similar al que recibió tras completar correctamente la prueba local.

- Vuelve a la consola de API Gateway y abre la API de PetStore que creamos antes.
-
En el panel de navegación de la izquierda, abre Authorizers y selecciona Create New Authorizer. Luego, configura los siguientes parámetros y haz clic en Create.
Parámetro Valor Name jwt-rsa-custom-authorizerType Selecciona Lambda Lambda Region Usa la región de la función Lambda que creaste anteriormente Lambda Function jwtRsaCustomAuthorizerLambda Invoke Role El ARN del rol de IAM que copiaste arriba Lambda Event Payload Selecciona Token Token Source AuthorizationToken Validation ^Bearer [-0-9a-zA-z\.]*$TTL (seconds) 3600 -
Cuando AWS cree el autorizador y la página se actualice, prueba el autorizador haciendo clic en Test y proporcionando el token de Auth0 (
Bearer ey...) que usaste anteriormente. Si la prueba se realiza correctamente, verás una respuesta similar a la siguiente.
-
Inicia sesión en AWS y ve a la consola de API Gateway.
Los autorizadores personalizados se configuran método por método; si quieres proteger varios métodos con un solo autorizador, tendrás que repetir las siguientes instrucciones para cada método.
-
Abre la API PetStore que creamos en el paso 2 de este tutorial. En el árbol de Resource del panel central, selecciona el método GET del recurso
/pets.
- Selecciona Method Request.
-
En Settings, haz clic en el icono de lápiz a la derecha de Authorization y elige el autorizador personalizado
jwt-rsa-custom-authorizerque creaste en el paso 3. -
Haz clic en el icono de marca de verificación para guardar el autorizador personalizado seleccionado. Asegúrate de que el campo API Key Required esté establecido en
false.
Implementa la API
Para publicar tus cambios, implementa tu API.- En el menú Actions, selecciona Deploy API.
-
Indica los siguientes valores y haz clic en Implementar:
Parámetro Valor Fase de implementación Elige [Nueva fase]Nombre de la fase Indica un nombre para tu fase Descripción de la fase Indica una descripción para tu fase Descripción de la implementación Indica una descripción para la implementación de tu API
Pruebe su implementación
GET a la Invoke URL que anotó en el paso anterior. Si esta prueba falla, compruebe que obtuvo correctamente el token de acceso JWT.
Para obtener más información, consulte Obtener tokens de acceso.