Sto rearchitecturing e riscrivo la mia soluzione monolitica di BaaS in microservizi riguardanti la scalabilità e le regole di singola responsabilità. A causa delle dipendenze interne, i servizi vengono posizionati su diversi livelli logici. Vedi la figura sotto;
Invece di accedere direttamente al database o all'archiviazione di valori-chiave, ogni servizio in Tier 2
deve utilizzare Tier 1
Data Storage Service
. L'obiettivo delle chiamate di servizio interne si trova tramite il servizio di configurazione ospitato indipendentemente dal gateway API. Il gateway API è distribuito e configurato per prodotto. Il prodotto ha un apikey e apisecret.
Scenario 1:
- Gli utenti finali possono accedere al prodotto ospitato. (Http *: // host / autenticazione / login)
Scenario 2:
-
Business Service
serve una logica personalizzata: MyClass.MyOperation () (http *: // host / business / myclass / myoperation) - Gli utenti finali di
Business Service
devono essere autenticati tramiteAuthentication Service
per utilizzare la business logic (autenticazione basata su token)
Sull'architettura monolitica, sono stato in grado di intercettare le chiamate commerciali estese tramite intercettori configurati all'interno del task http in esecuzione corrente. Pertanto, sono stato in grado di ricevere AuthenticationToken dalla richiesta del servizio aziendale e decidere se l'utente finale è stato autenticato tramite il servizio di autenticazione interrogando direttamente l'archivio valore-chiave.
Seguendo l'architettura micoservice, prima di eseguire la logica di business Business Service
dovrebbe effettuare una richiesta con il trasferimento di tutte le intestazioni di richiesta originali a Authentication Service
, attende la sua risposta, quindi analizza il risultato dell'autenticazione ed esegue la logica di business desiderata compito di risposta. Responsabilità unica, abbastanza equa.
Domanda:
- Considerando che ogni
Tier 2
di servizi può essere distribuito ovunque all'interno della rete, quali sono le opzioni disponibili per distinguere in modo sicuro le richieste interne ed esterne tra gateway e microservizi? - Questo approccio potrebbe essere utilizzato per prevenire il ciclo di servizio interno?