Chamadas de microsserviço a microsserviço, autorização de uma mensagem na fila

Contexto: Estou criando uma plataforma em nuvem para dar suporte a vários aplicativos com SSO. estou a usarKeycloak para autenticação eNetflix Zuul para autorização (Gateway da API) atéAdaptador de segurança de mola Keycloak.

Cada microsserviço espera um cabeçalho de Autorização, que contém um JWT válido, do qual será necessário o nome de usuário (sub) para processar a solicitação. Cada chamada de microsserviço para microsserviço deve passar primeiro pelo Netflix Zuul, passando o cabeçalho de autorização para manter uma validação sem estado. Essa estratégia permite que todo microsserviço saiba quem é o usuário (sub) que está invocando o microsserviço indiretamente.

Problema / Questão 1: O que acontece se um microsserviço for chamado a partir de uma mensagem da fila? Uma ideia que tive foi armazenar na fila as informações relacionadas à mensagem + userInfo e criar um microsserviço dedicado para processar esse tipo de mensagem. Com essa abordagem, esse microsserviço especial deve ler o userInfo da fila e processar a mensagem .

ATUALIZAÇÃO 1: Por uma resposta por e-mail de outro fórum, armazenar o JWT em uma fila não é uma boa ideia, pois pode ser extraído facilmente.

Problema / Questão 2: Mas, o que acontece se o microsserviço especial anterior quiser chamar outro microsserviço normal que espera receber um JWT em um cabeçalho? Esse microsserviço especial deve criar por si próprio um JWT para representar o usuário e poder chamar os microsserviços regulares?

Outra solução que pensei foi armazenar o JWT original na fila, mas o que acontece se a fila chamar o microsserviço especial mais tarde? Logo após o JWT não ser mais válido (ele expirou) e o microsserviço chamado rejeitará a solicitação?

Soluções possíveis: (Atualizado por discussão de João Angelo, veja abaixo)

Eu devo autenticar os pedidos dos meus usuários (Fluxo do código de autorização) e meus serviços (Concessão de credenciais do cliente), as duas solicitações devem conter informações do usuário na carga útil. Quando a solicitação vem do usuário, preciso validar se as informações do usuário da carga útil correspondem às reivindicações do JWT. Quando a solicitação vem de um serviço, eu só preciso confiar nesse serviço (desde que esteja sob meu controle).

Agradeço muito sua ajuda. Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion