Sto cercando di saperne di più sull'autenticazione nei microservizi usando OAuth2.
Ho letto su OAuth2 e, mentre capisco le basi, ho grandi difficoltà a capire come tutto funzioni insieme.
Iniziamo con un esempio:
Ho un sito web, che è costruito su due microservizi:
- auth service: fondamentalmente un servizio auth2 che utilizza l'autenticazione della password basata sul proprietario delle risorse.
- album: una volta che un utente è autenticato, può creare album fotografici e condividerlo con altri utenti del sito. Il sito web
- ha l'opzione "ricordami per 30 giorni" durante il login.
- l'utente dovrebbe essere in grado di vedere da quali dispositivi e posizioni ha effettuato l'accesso e in grado di terminarli (in caso di accessi non autorizzati). Questo è simile alla funzionalità fornita da FaceBook e DropBox.
Iniziamo con l'app di autenticazione, una tipica risposta auth2 si presenta così:
{"refresh_token": "aEMpqJsg6aotX9HaeVnFqqRBaQn7Bo", "access_token": "aSAX21mzmYRnizwhn1ltFZWDsIbif4", "expires_in": 36000, "token_type": "Bearer", "scope": "read write"}
Il pulsante di accesso del mio sito web fa appena un OAuth2 richiede il mio servizio di autenticazione e riceve la risposta sopra.Ora, cosa devo fare con queste informazioni per poter utilizzare questo? Memorizzo questa risposta JSON in un cookie? Ho bisogno di qualche forma di persistenza, per poter utilizzare questo token per le richieste successive.
Domanda successiva: posso creare un token che scade tra 30 giorni o è considerato una cattiva pratica? Se sì, come posso mitigarlo senza perdere questa funzionalità?
Ora alla parte successiva: il mio servizio di album deve sapere chi è l'utente. Presumo che il gateway API abbia la responsabilità di assicurarsi che il token sia corretto e che includa anche l'id utente nella richiesta? Cosa succede se l'album necessita di ulteriori informazioni sull'utente? Dovrebbe semplicemente contattare l'app di autenticazione per questo?
Ho cercato di trovare da solo le risposte a queste domande, ma è molto difficile trovare informazioni valide al riguardo. La maggior parte delle cose che ho trovato sulla rete mi hanno dato risposte vaghe, come "leggi le specifiche di oauth2" o "usa JWT". Mentre mi rendo conto che è necessaria una buona comprensione di oauth2, sarebbe utile per me ricevere una spiegazione da qualcuno che ha una reale esperienza nella costruzione di qualcosa di simile. (I consigli sui libri sono i benvenuti).