Eu tenho um monte de microsserviços que são acessíveis apenas externamente por meio de um API Gateway.
Meu gateway de API é configurado como um recurso OAuth e valida o token (verifica a assinatura etc.) antes de passar a solicitação a jusante para um ou mais microsserviços.
Embora meus microsserviços precisem do token para verificar escopos e reivindicações, agora é necessário que este serviço valide o token também?
Parece um pouco exagerado, mas não consigo encontrar nenhum conselho on-line sobre esse cenário.
A validação do token no gateway da API é boa o suficiente? Ou é uma prática recomendada validá-lo novamente mais tarde?
microservices
fml
fonte
fonte
I cannot find any advice online about this scenario.
Porque depende de vários fatores que variam de projeto para projeto. Provavelmente na maioria dos desenvolvimentos que afirmam ser arquitetura MS, eles não precisam disso. Além disso, nessas arquiteturas, deve haver um servidor de autenticação que faça isso em vez dos serviços (e em vez do gateway, é claro). É o servidor de autenticação que permite que a solicitação seja aprovada ou não.Respostas:
Se alguma chamada interna puder ignorar o gateway, valide o token em cada microsserviço ou force todas as chamadas - internas e externas - a passar pelo gateway.
Pessoalmente, eu também não confiaria em chamadas internas. Faça com que eles passem pelo gateway, até o ponto de limitar o tráfego por meio de regras de firewall. Saiba quem está falando com quem e por quê. Isso ajuda a limitar sua superfície de ataque se alguém violar sua rede.
Isso introduz um ponto único de falha, mas esse risco pode ser atenuado pelos servidores de balanceamento de carga e pela disponibilidade de servidores de failover em caso de problemas catastróficos.
Por outro lado, se todo serviço validar o token, e qualquer coisa sobre o processo de validação for alterada, você precisará atualizar os serviços N + 1.
fonte