... i punti finali di cui sopra dovrebbe essere limitato solo ad altri microservices all'interno della stessa applicazione ...
Quello di cui si sta parlando in senso lato è l'autorizzazione.
L'autorizzazione è la concessione o la negazione di "poteri" o "abilità" all'interno della propria applicazione agli utenti autentici.
Quindi il lavoro di qualsiasi meccanismo di autorizzazione è di convalidare la "rivendicazione" implicita in qualsiasi richiesta API in entrata - che l'utente è autorizzato a fare la cosa codificata nella richiesta.
Per fare un esempio, immagino ho girato al vostro API con una richiesta PUT per Widget 1234:
PUT /widgetservice/widget/1234 HTTP/1.1
Questo potrebbe essere interpretato come me (Bob Smith, un utente noto) effettuare un reclamo che io sono ha permesso di apportare modifiche a un widget nel vostro sistema con id 1234.
Qualunque cosa tu faccia per convalidare questa affermazione, spero che si può vedere questo deve essere fatto a livello di applicazione, piuttosto che a livello di API. Infatti, l'autorizzazione è una preoccupazione a livello di applicazione, piuttosto che una preoccupazione a livello di API (a differenza dell'autenticazione, che è è molto un problema di livello API).
Per dimostrare, nel nostro esempio di cui sopra, è possibile theoritically mi è permesso di creare un nuovo widget, ma non aggiornare un widget esistente:
POST /widgetservice/widget/1234 HTTP/1.1
O ancora ho il permesso di aggiornare solo widget di 1234 e le richieste di cambiare altri widget non dovrebbe essere consentito
PUT /widgetservice/widget/5678 HTTP/1.1
Come raggiungere questo limitato l'accesso API per altri microservices all'interno della stessa applicazione?
Così questo diventa una domanda su come si può costruire l'autorizzazione nella vostra applicazione in modo che è possibile convalidare le singole richieste provenienti da utenti conosciuti (nel tuo caso gli altri servizi nel vostro ecosistema sono solo un altro tipo di utente conosciuto).
Bene, e mi scuso, ma qui verrò prescritto, è possibile utilizzare un servizio di autorizzazione basato sulle attestazioni, che memorizza le attestazioni valide in base all'identità dell'utente o all'appartenenza ai ruoli.
Dipende in gran parte da come gestisci l'autenticazione e se stai supportando o meno i ruoli come parte di tale processo. È possibile archiviare i reclami nei confronti dei singoli utenti, ma questo diventa difficile man mano che aumenta il numero di utenti. OAuth, nonostante sia piuttosto pesante da implementare, è una piattaforma leader per questo.
sto costruendo enorme applicazione utilizzando microservices architettura
L'unica cosa che posso dire qui è leggere this prima.
Come si definisce "la stessa applicazione"? –
Ho inteso l'intero sistema dei microservizi connessi con "la stessa applicazione" – Patryk