Varnish es un acelerador HTTP de alto rendimiento y un proxy inverso que ha ganado una gran popularidad en el espacio de la infraestructura web. Varnish Configuration Language (VCL) es un lenguaje específico de dominio que se utiliza para controlar el comportamiento de Varnish. En este blog, profundizaremos en qué es la autenticación Varnish VCL JWT, su importancia y cómo se puede implementar, especialmente considerando que soy proveedor de Varnish.
Entendiendo JWT
Los tokens web JSON (JWT) son un estándar abierto (RFC 7519) para transmitir información de forma segura entre partes como un objeto JSON. Se utilizan comúnmente para autenticación y autorización en aplicaciones web. Un JWT consta de tres partes: un encabezado, una carga útil y una firma. El encabezado suele contener información sobre el tipo de token y el algoritmo de firma. La carga útil contiene los reclamos, que pueden ser declaraciones sobre el usuario, como su identificación, función u otros datos relevantes. La firma se utiliza para verificar que el mensaje no ha sido modificado y, en el caso de tokens firmados, para garantizar que el remitente es quien dice ser.


Conceptos básicos de barniz y VCL
Varnish actúa como una capa de almacenamiento en caché entre clientes y servidores web. Puede mejorar significativamente el rendimiento de un sitio web al ofrecer contenido en caché directamente a los clientes, lo que reduce la carga en los servidores de origen. VCL permite a los administradores personalizar cómo se comporta Varnish. Proporciona un conjunto de subrutinas que se ejecutan en diferentes etapas del procesamiento de solicitudes y respuestas. Por ejemplo, elvcl_recvLa subrutina se llama cuando Varnish recibe una solicitud de un cliente y elvcl_backend_responseLa subrutina se llama cuando Varnish recibe una respuesta del servidor de origen.
¿Qué es la autenticación Varnish VCL JWT?
La autenticación Varnish VCL JWT se refiere al proceso de utilizar VCL para verificar la autenticidad e integridad de los JWT en las solicitudes entrantes. Cuando un cliente envía una solicitud a un servidor Varnish, Varnish puede extraer el JWT de la solicitud (generalmente delAutorizaciónencabezado), decodificarlo y verificar su firma. Si la verificación tiene éxito, se puede permitir que la solicitud proceda al servidor de origen o sea atendida desde la memoria caché, si corresponde. Si la verificación falla, Varnish puede devolver una respuesta de error al cliente, impidiendo el acceso no autorizado.
¿Por qué es importante la autenticación Varnish VCL JWT?
- Seguridad: Al verificar los JWT en el nivel de Varnish, puede evitar que solicitudes no autorizadas lleguen al servidor de origen. Esto agrega una capa adicional de seguridad a su aplicación web, ya que Varnish puede actuar como un guardián, filtrando solicitudes con tokens no válidos o vencidos.
- Actuación: Varnish está diseñado para manejar solicitudes muy rápidamente. Al realizar la verificación JWT en el nivel Varnish, puede evitar enviar solicitudes innecesarias al servidor de origen, reducir la carga en el servidor y mejorar el rendimiento general de su aplicación.
- Flexibilidad: VCL le permite personalizar el proceso de autenticación según sus requisitos específicos. Puede definir diferentes reglas para diferentes tipos de solicitudes o usuarios, y puede integrarse con otros mecanismos de seguridad si es necesario.
Implementación de la autenticación Varnish VCL JWT
A continuación se ofrece una descripción general de alto nivel de cómo implementar la autenticación Varnish VCL JWT:
Paso 1: extraiga el JWT de la solicitud
En elvcl_recvsubrutina, necesita extraer el JWT de laAutorizaciónencabezamiento. El encabezado suele tener un formato comoPortador <JWT>.
sub vcl_recv { if (req.http.Authorization ~ "^Bearer\\s+(.*)$") { set req.http.X-JWT = regsub(req.http.Authorization, "^Bearer\\s+(.*)$", "\\1"); } else { # No se encontró JWT, devuelve una respuesta no autorizada return(synth(401, "No autorizado")); } }
Paso 2: decodificar y verificar el JWT
Para decodificar y verificar el JWT, puede utilizar un Varnish VMOD (módulo de barniz) que proporciona la funcionalidad JWT. Por ejemplo, elvmod-jwtEl módulo se puede utilizar para este propósito.
importar jwt; sub vcl_recv { if (req.http.Authorization ~ "^Bearer\\s+(.*)$") { set req.http.X-JWT = regsub(req.http.Authorization, "^Bearer\\s+(.*)$", "\\1"); if (!jwt.verify(req.http.X-JWT, "su_clave_secreta")) { return(synth(401, "JWT no válido")); } } else { return(synth(401, "No autorizado")); } }
Paso 3: Autorizar la solicitud
Una vez que se verifica el JWT, puede verificar los reclamos en la carga útil para determinar si el usuario está autorizado a acceder al recurso solicitado. Por ejemplo, puede comprobar si el usuario tiene el rol adecuado.
importar jwt; sub vcl_recv { if (req.http.Authorization ~ "^Bearer\\s+(.*)$") { set req.http.X-JWT = regsub(req.http.Authorization, "^Bearer\\s+(.*)$", "\\1"); if (!jwt.verify(req.http.X-JWT, "su_clave_secreta")) { return(synth(401, "JWT no válido")); } establecer req.http.X-JWT-Role = jwt.get_claim(req.http.X-JWT, "rol"); if (req.http.X-JWT-Role != "admin" && req.url ~ "^/admin/") { return(synth(403, "Prohibido")); } } else { return(synth(401, "No autorizado")); } }
Nuestros productos de barniz y autenticación JWT
Como proveedor de barniz, ofrecemos una gama de productos y servicios relacionados con el barniz. Nuestras soluciones de barniz están optimizadas para el rendimiento y la seguridad. Podemos ayudarlo a implementar la autenticación Varnish VCL JWT en su infraestructura, asegurando que sus aplicaciones web estén protegidas contra el acceso no autorizado.
También ofrecemos diferentes tipos de barnices para el acabado del cuero, comoBrillo de poliuretano a base de agua,Capa superior mate a base de agua, yBarniz transparente a base de agua. Estos productos están diseñados para mejorar la apariencia y durabilidad de los productos de cuero.
Contáctenos para adquisiciones y consultas
Si está interesado en implementar la autenticación Varnish VCL JWT en su infraestructura o si desea obtener más información sobre nuestros productos y servicios Varnish, le recomendamos que se comunique con nosotros para realizar adquisiciones y realizar consultas. Nuestro equipo de expertos está listo para ayudarlo a encontrar las mejores soluciones para sus necesidades.
Referencias
- RFC 7519: Token web JSON (JWT)
- Documentación oficial de barniz.
- Barniz VMOD - documentación jwt
