AWS Lambda + API Gateway + Cognito. Parte IV.

Finalizando con esta serie de entradas, vamos a ver cómo configurar nuestra función AWS Lambda para que solo se pueda ejecutar si estás autorizado, enviando para ello el token que nos devolvía la autenticación con Cognito que vimos en el último post.

En la segunda parte de esta serie de posts, vimos cómo configurar API Gateway para poder ejecutar desde Internet nuestra función Lambda. Vamos a volver de nuevo a esa configuración de API Gateway, donde habíamos creado ya un recurso POST para ejecutar la función. Ahora nos iremos a la opción de menú de Autorizadores, donde vamos a crear un nuevo autorizador.

A la hora de crear el nuevo autorizador, vamos a indicar que será de tipo Cognito. También debemos indicar el grupo de usuarios de Cognito, que ya habíamos creamos previamente en la región us-east-1 (al pinchar en la casilla nos saldrán los diferentes grupos de que dispongamos), y finalmente debemos indicar el Origen de token, que será la cabecera HTTP en la que pasaremos nuestro token. Podemos poner lo que queramos, yo aquí he puesto X-COG-ID, pero debemos recordar que ese debe ser el nombre que tenga la cabecera en la que enviaremos el token.

La validación de token es opcional, pero si lo deseamos, podemos poner una expresión regular que nos valide nuestro token.

Una vez creado el autorizador, volvemos a la opción de menú de Recursos y seleccionamos el método POST que habíamos creado.

Vemos que en la Solicitud de método nos aparece Autorización: NINGUNA. Vamos a cambiar esto, editando dicha solicitud y editaremos la opción de Autorización. Seleccionaremos el autorizador de Cognito que hemos creado (nota: si no aparece, refrescad la página) y guardaremos la configuración.

Ahora debemos desplegar la nueva configuración. Recordemos que esto se hacía desde Acciones -> Implementar la API. Seleccionaremos la etapa que ya estaba creada previamente y le daremos a Implementación.

Podemos ahora comprobar en Etapas cómo nos aparece nuestra etapa con autorización.

Y con esto ya lo tenemos todo configurado. Si probamos ahora, como lo hacíamos, a ejecutar nuestra llamada desde Postman, veremos que no tenemos autorización para ejecutar la función Lambda, ya que no hemos indicado ningún token en la cabecera correspondiente.

Lo que vamos a hacer es ir a la opción de Headers en Postman y añadir la nueva cabecera X-COG-ID. Y le añadiremos un token válido a esa cabecera (podemos ejecutar nuestra función de login para obtener un token válido).

Como vemos, al añadir la cabecera y enviar un token válido, ahora sí estamos autorizados a ejecutar la función y nos devuelve lo que habíamos programado en nuestra función Lambda.

Categorías