Logto x Cloudflare Workers: ¿Cómo proteger a tus Workers del acceso público?
En este artículo, presentamos cómo asegurar las APIs de Cloudflare Workers con Logto. Usamos Hono como el framework de aplicación web para simplificar el desarrollo.
Cloudflare Workers (usaremos Workers por abreviar en el contenido siguiente) proporciona un entorno de ejecución sin servidor que te permite crear nuevas aplicaciones o mejorar las existentes sin necesidad de configurar o mantener infraestructura.
Con Workers, puedes construir tus aplicaciones sin servidor y desplegarlas al instante en todo el mundo para obtener un rendimiento, una fiabilidad y una escala excepcionales. Workers no solo ofrece un rendimiento excepcional, sino que también proporciona un plan gratuito notablemente generoso y planes de pago asequibles. Ya sea que seas un desarrollador individual o un equipo a gran escala, Workers te permite desarrollar y entregar productos rápidamente mientras minimizas la sobrecarga operativa.
Los Workers son accesibles públicamente por defecto, lo que requiere medidas de protección para prevenir ataques y uso indebido. Logto ofrece un servicio de identidad completo, fácil de usar y escalable que puede proteger a Workers y todos los demás servicios web.
Este artículo profundiza en el proceso de asegurar tus Workers usando Logto.
Construye un ejemplo de Workers
Primero vamos a construir un proyecto de ejemplo de Workers con Hono en una máquina local.
Usamos Wrangler CLI para desplegar el ejemplo en Cloudflare, por lo tanto, podemos acceder a la ruta.
Protege las APIs de Workers
Para comparar una API de acceso público con una API protegida, añadimos una API GET /auth/greet
, que requiere permisos específicos para acceder.
No podemos acceder a la API correspondiente sin los permisos adecuados.
Para gestionar adecuadamente el acceso a las APIs de Workers, introducimos Logto.
Configura Logto
Regístrate si no tienes una cuenta.
Usamos Machine-to-machine (M2M) como ejemplo para acceder a las APIs protegidas de Workers porque es directo. Si deseas otorgar acceso a los usuarios de tu aplicación web, la configuración es bastante similar, pero deberías usar el rol de “Usuario” en lugar de “Machine-to-machine”.
- Entra en el Logto Admin Console y ve a la pestaña “Recurso de API”, crea un recurso de API llamado “Workers sample API” con indicador de recurso
https://sample.workers.dev/
. También crea un permisogreet:visitor
para este recurso de API.
- Crea un “Rol de administrador de Workers”, que es un rol de “Machine-to-machine”, y asigna el ámbito
greet:visitor
a este rol.
- Crea una aplicación M2M y asigna el “Rol de administrador de Workers” a la aplicación.
Actualiza el validador de autenticación de Workers
Como Logto usa tokens de acceso JWT de manera interna, necesitamos implementar la lógica de validación de JWT en Workers.
Dado que el token de acceso JWT es emitido por Logto, necesitamos:
- Obtener la clave pública correspondiente para verificar la firma.
- Verificar que el consumidor del token de acceso JWT sea la API de Workers.
Estas constantes se pueden configurar en el archivo wrangler.toml
[1] y se desplegarán como variables de entorno de Workers. También puedes gestionar las variables de entorno manualmente en el Panel de Cloudflare.
Después de desplegar el proyecto de Workers en Cloudflare, podemos probar si las APIs están protegidas con éxito.
- Obtener el token de acceso
- Solicitar la API
GET /auth/greet
de Workers
Conclusión
Con la guía paso a paso en este artículo, deberías poder usar Logto para construir protección para tus APIs de Workers.
En este artículo, hemos utilizado el CLI de Wrangler para el desarrollo local y el despliegue de proyectos de Workers. Cloudflare también ofrece robustas y versátiles APIs de Workers para facilitar el despliegue y la gestión.
Piensa en desarrollar una aplicación SaaS. La API de Cloudflare te permite desplegar Workers dedicados para cada inquilino con facilidad, mientras tanto, Logto asegura que los tokens de acceso sigan siendo exclusivos de sus respectivos inquilinos. Este control granular previene el acceso no autorizado entre inquilinos, mejorando la seguridad y la privacidad de los datos para los usuarios de tu aplicación SaaS.
La arquitectura adaptable y robusta de Logto se adapta a las diversas necesidades de autenticación y autorización de variadas aplicaciones. Ya sea que estés construyendo una plataforma SaaS compleja o una simple aplicación web, Logto proporciona la flexibilidad y escalabilidad para satisfacer tus requisitos específicos.