La arquitectura de microservicios tiene como objetivo aislar los distintos componentes de una aplicación, con el fin de que cada uno sea una aplicación por sí misma. Nace como una respuesta contra las arquitecturas monolíticas que consideran una aplicación como una unidad indivisible, lo que impacta negativamente su escalabilidad pues la limitan en complejidad, carga soportada y desarrolladores, pues será necesario entender todo el sistema para realizar un cambio o un despliegue.
Al aplicar esta nueva arquitectura nos veríamos ante la necesidad de implementar autenticación para el acceso a los servicios, entre las soluciones utilizando JWT están:
- Crear un servicio para generar y autenticar tokens, para que cada vez que un servicio reciba un token de un cliente realicé una llamada a este servicio y lo verifique. Pero esto traería como consecuencia el generar un bottleneck en este servicio.
- Se podría configurar la llave secreta en cada servicio que reciba un token del cliente, así verifica el token sin necesidad de llamar a otro servicio, pero no es una práctica recomendada tener en múltiples ubicaciones la llave secreta pues aumenta el riesgo de comprometerla y por ende al sistema entero.
En base a estas soluciones, se puede optar por utilizar un llave pública bajo el algoritmo RS256 que nos permita únicamente tener la llave privada en el servicio de autenticación (para generar los tokens) mientras los otros servicios pueden verificar utilizando esta llave pública.
Top comments (0)