Dati di sessione dei microservizi durante la comunicazione interna

0

Non sono sicuro che il titolo sia corretto, quindi ti preghiamo di avvisare se pensi ad un titolo migliore.

Lo scenario è:

  1. Abbiamo un gateway API che espone l'API REST ai nostri clienti (web e app mobili).
  2. Abbiamo un microservizio "sessioni" che tiene traccia di gli utenti registrati. Quando un utente effettua l'accesso, viene archiviata una nuova sessione questo microservizio e per ogni richiesta che richiede autenticazione, l'API GW prima comunica con questo microservizio per convalidare il token di sessione e ottenere informazioni relative alla sessione (ID utente, elenco delle autorizzazioni ecc.)
  3. L'API GW dopo aver convalidato il file sessione esegue alcune chiamate ad altri microservizi richiesti per soddisfare la richiesta, ma alcuni di essi hanno bisogno dell'utente connesso ID.

Un semplice esempio è un sito web di blog, in cui l'utente che ha effettuato l'accesso desidera aggiungere un post al suo blog.

  1. Esegue un post POST / post con il suo nuovo post del blog e il token di sessione (ID sessione univoco)
  2. La richiesta raggiunge l'API GW.
  3. L'API GW controlla il token di sessione sul microservizio delle sessioni che convalida il token e restituisce i dati della sessione (id utente, permessi)
  4. L'API GW ora deve inviare una richiesta ai post microservice per aggiungere il post all'utente.

La domanda riguarda il passaggio 4 - che cosa sarebbe considerato una pratica migliore :

  • L'invio dell'ID utente come parte dell'oggetto post, ovvero il servizio postale non gestisce alcuna autenticazione / autotarazione, semplicemente memorizza l'oggetto dopo la convalida di base dell'oggetto.

    o

  • Utilizzo di una sorta di JWT che contiene le informazioni sulle sessioni e passa con il post del blog al servizio dei post, che deve quindi convalidare il JWT e utilizzare l'ID utente dal JWT quando si memorizzano i dati del post che sono stati passati senza alcun ID utente in esso?

posta Ron Dadon 02.09.2017 - 18:10
fonte

1 risposta

1

Utilizza entrambi.

Innanzitutto, JWT non deve essere utilizzato per sostituire la sessione sul lato client. Sono stati fatti per risolvere un altro problema. Per maggiori dettagli visita il link di riferimento.

Link di riferimento link

Ho avuto la stessa domanda qualche tempo fa. Il modo in cui ho risolto il mio problema era il seguente:

Memorizza le sessioni sul backend (High Available Key-value Store con complessità temporale costante O (1)) e usa il JWT per memorizzare l'id dell'utente o l'id di sessione in modo da poterlo recuperare nel back-end.

Questo link ha un'implementazione interessante. link

Ci sono un paio di varianti a questo. Il concetto principale da ricordare è utilizzare gli strumenti giusti per il lavoro e PROVARE a mantenerlo semplice.

    
risposta data 15.11.2017 - 21:16
fonte

Leggi altre domande sui tag