Llamadas de microservicio a microservicio, autorización de un mensaje en cola

Contexto: Estoy creando una plataforma en la nube para admitir múltiples aplicaciones con SSO. Estoy usandoCapa clave para la autenticación yNetflix Zuul para autorización (API Gateway) a travésAdaptador de seguridad de resorte Keycloak.

Cada microservicio espera un encabezado de autorización, que contiene un JWT válido, del cual tomará el nombre de usuario (sub) para procesar la solicitud. Cada llamada de microservicio a microservicio debe pasar primero por Netflix Zuul, pasando el encabezado de autorización para mantener una validación sin estado. Esa estrategia permite a cada microservicio saber quién es el usuario (sub) que invoca el microservicio indirectamente.

Problema / Pregunta 1: ¿Qué sucede si se invoca un microservicio desde un mensaje de cola? Una idea que tuve fue almacenar en la cola la información relacionada con el mensaje + información del usuario y crear un microservicio dedicado para procesar ese tipo de mensajes, con ese enfoque este microservicio especial debería leer la información del usuario de la cola y procesar el mensaje .

ACTUALIZACIÓN 1: Según una respuesta por correo electrónico de otro foro, almacenar el JWT en una cola no es una buena idea, ya que podría extraerse fácilmente.

Problema / Pregunta 2: Pero, ¿qué sucede si el microservicio especial anterior desea llamar a otro microservicio normal que espera recibir un JWT en un encabezado? ¿Debería este microservicio especial crear por sí mismo un JWT para suplantar al usuario y poder llamar a los microservicios regulares?

Otra solución que pensé fue almacenar el JWT original en la cola, pero, ¿qué sucede si la cola llama al microservicio especial más tarde? ¿Justo después de que el JWT ya no sea válido (expiró) y el microservicio llamado rechazará la solicitud?

Soluciones posibles: (Actualizado por discusión de João Angelo, ver abajo)

Debería autenticar las solicitudes de mis usuarios (Flujo de código de autorización) y mis servicios (Concesión de credenciales de cliente), ambas solicitudes deben contener información del usuario en la carga útil. Cuando la solicitud proviene del usuario, necesito validar que la información del usuario de la carga útil coincida con los reclamos de JWT. Cuando la solicitud proviene de un servicio, solo necesito confiar en ese servicio (siempre que esté bajo mi control).

Agradeceré mucho tu ayuda. Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta