𝗔𝘂𝘁𝗵𝗲𝗻𝘁𝗶𝗰𝗮𝘁𝗶𝗼𝗻 𝗠𝗶𝗱𝗱𝗹𝗲𝘄𝗮𝗿𝗲 𝗶𝗻 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲
La seguridad es una prioridad para cualquier aplicación web. Debes controlar quién accede a tus recursos. En Hyperlane, esto se hace mediante middleware. El middleware actúa como un guardián. Intercepta las solicitudes antes de que lleguen a tu código.
Cómo funciona el middleware de Hyperlane
El middleware utiliza el trait ServerHook. Tiene dos partes principales:
• new(): Configura la conexión.
• handle(): Se ejecuta para cada solicitud. Aquí es donde verificas la seguridad.
El método handle devuelve un estado:
• Status::Continue: La solicitud es segura. Permítela pasar.
• Status::Reject: La solicitud no es segura. Detenla aquí.
Patrones de autenticación comunes
Verificación de encabezados Puedes verificar la presencia de un encabezado
Authorization. Si el encabezado falta, devuelve un estado401 Unauthorized. Rechaza la solicitud de inmediato.Tokens Bearer La mayoría de las APIs utilizan tokens Bearer. Tu middleware debería: • Verificar si el encabezado comienza con "Bearer ". • Extraer el token. • Almacenar el token en el contexto para su uso posterior.
Filtrado de atributos Hyperlane te permite filtrar solicitudes mediante macros sencillas. Puedes restringir el acceso por: • Métodos HTTP (como GET o POST). • Nombres de host. • Rutas específicas. • Encabezados
Referer.
Mejores prácticas para APIs seguras
• Falla rápido. Rechaza las solicitudes incorrectas a tiempo para ahorrar recursos del servidor. • Usa atributos de contexto. Almacena los tokens validados en el contexto para que otras partes de tu aplicación puedan leerlos sin necesidad de volver a procesarlos. • Gestiona CORS correctamente. Configura tus encabezados CORS antes de realizar la autenticación. Esto asegura que los navegadores puedan leer los mensajes de error. • Organiza tu middleware en capas. Usa números de prioridad para decidir el orden. Ejecuta CORS primero y luego la autenticación. • Gestiona los streams. Si una solicitud falla al enviarse, cierra el stream para evitar errores.
Al utilizar estas herramientas, construirás sistemas seguros y organizados.
Fuente: https://dev.to/tengxgfyrz67s/authentication-middleware-151c Código del proyecto: https://github.com/hyperlane-dev/hyperlane