Non è necessariamente una cattiva idea, ma credo che sia un po 'complicato. Dalle informazioni che ci hai fornito, non capisco assolutamente la necessità del gateway.
Prima di tutto, presumo che tu abbia un servizio / server separato che agisce come un server di autenticazione, consumando credenziali utente e gettando fuori (diciamo) token JWT firmati che garantiscono il ruolo e l'autenticità di ciascun utente. Quindi, quando il client desidera accedere all'esecuzione di una query su uno dei micro-servizi, può recuperare un token JWT dal server di autenticazione se non ne ha già uno, quindi passare questo token JWT nell'intestazione di autenticazione in una richiesta direttamente a il micro-servizio.
Il micro-servizio può quindi verificare la firma sul token JWT con lo stesso algoritmo utilizzato per firmarlo (ad esempio l'algoritmo HMAC-SHA256). Se la firma è valida, il micro-servizio controlla il ruolo fornito nel token JWT e soddisfa la richiesta o la rifiuta.
Il problema con il tuo metodo è la possibilità di aggirare il gateway e inoltrare richieste direttamente al micro-servizio. Ad esempio:
--------- -------------
----> Queries ----> Gateway ---- RPC ----> Microservices
--------- -------------
^
|
----> Attacker Query -------------------------
Dove l'attaccante non trasmette token JWT e il micro-servizio soddisferà comunque la richiesta.
L'unica buona ragione per usare un gateway come hai spiegato è se non c'è modo per la persona che forma la query di sapere dove risiede questo microservizio e / devono usare il gateway per indirizzare la loro query al micro- servizio. In tal caso, a meno che tu non possa assolutamente garantire che nessuna richiesta, ad eccezione delle richieste provenienti dal gateway, possa raggiungere i micro-servizi, dovrai controllare i token sia sui micro-servizi che sul gateway.
Spero che ti aiuti!