Me está costando elegir una estrategia de autenticación decente / segura para una arquitectura de microservicio. La única publicación SO que encontré sobre el tema es esta: Inicio de sesión único en arquitectura de microservicios
Mi idea aquí es tener en cada servicio (por ejemplo, autenticación, mensajería, notificación, perfil, etc.) una referencia única para cada usuario (bastante lógicamente, entonces el suyo user_id
) y la posibilidad de obtener el usuario actual id
si está conectado.
De mis investigaciones, veo que hay dos estrategias posibles:
1. Arquitectura compartida
En esta estrategia, la aplicación de autenticación es un servicio entre otros. Pero cada servicio debe poder realizar la conversión session_id
=> user_id
por lo que debe ser muy simple. Por eso pensé en Redis, que almacenaría la clave: el valor session_id:user_id
.
2. Arquitectura de firewall
En esta estrategia, el almacenamiento de la sesión realmente no importa, ya que solo lo maneja la aplicación de autenticación. Luego user_id
se puede reenviar a otros servicios. Pensé en Rails + Devise (+ Redis o mem-cached, o almacenamiento de cookies, etc.) pero hay muchas posibilidades. Lo único que importa es que el Servicio X nunca necesitará autenticar al usuario.
¿Cómo se comparan esas dos soluciones en términos de:
- seguridad
- robustez
- escalabilidad
- facilidad de uso
¿O tal vez sugerirías otra solución que no he mencionado aquí?
Me gusta más la solución n. ° 1, pero no he encontrado mucha implementación predeterminada que me asegure en el hecho de que voy en la dirección correcta.
Espero que mi pregunta no se cierre. Realmente no sé dónde más preguntarlo.
Gracias por adelantado