Sono abbastanza nuovo nell'architettura dei microservizi. Sto cercando di costruire un'applicazione web in questo modo. Dopo alcune ricerche online sui microservizi e l'esperienza con Spring e Angular, desidero creare un'applicazione web con API REST back-end separate front-end e multiple (separate).
Come voglio progettare la mia applicazione è un front-end javascript / html / css (sviluppato da me, nessun client esterno). Il front-end comunicherà tramite un gateway API (proxy inverso) alle mie API REST back-end. Le API REST saranno microservizi diversi. Voglio che l'utente esegua l'accesso una volta (SSO) per essere autenticato e autorizzato per le API REST. Alcune API saranno pubbliche, ma alcune devono essere protette. Anche questo potrebbe essere su diversi livelli (admin e user's API).
Front end -> API Gateway --> Authorization server
|-> User REST API (User and Admin)
|-> Statistics REST API (User and Admin)
|-> Admin user overview REST API (Admin only)
La cosa che mi preoccupa è l'autenticazione / autorizzazione dell'utente. (È un grosso problema nella mia app). Questo è dove mi sono perso. Ho fatto qualche ricerca online per questo e ci sono molte persone che raccomandano Oauth2 per questo. Anche se ho pensato che Oaut2 è per l'autorizzazione dell'applicazione alla domanda sembra esserci un flusso di autorizzazione per le applicazioni web basate su javascript (Il flusso implicito). Voglio che l'utente effettui il login nel front end, nessuna autenticazione social o altro. Completa il tuo sistema sviluppato.
In realtà è un linguaggio agnostico (quasi ogni lingua può implementare OAuth2). Sto cercando il modo migliore per implementare l'autenticazione e l'autorizzazione di sicurezza. Ma mi chiedevo se OAuth2 fosse la cosa giusta per questa architettura. Il flusso implicito di Oauth2 è abbastanza buono per il mio front end sviluppato? O potrei / dovrei usare il flusso della password?
Se Oauth non è adatto a questo obiettivo, che cosa dovrebbe essere usato allora? Ho letto di JWT ma non sono sicuro che sia quello di cui ho bisogno. E se Oauth2 è adatto alla mia situazione, dovrei usare il flusso Implicito o Password?
Spero che voi ragazzi potete aiutarmi a decidere e spiegare un po 'le cose.
Grazie!