Gestione di token memorizzati dietro diversi microservizi

1

Ho una domanda molto interessante che è esplosa in modo proporzionale tra i miei amici ed io. Si tratta di gestire i token emessi dall'utente da una serie di microservizi di autenticazione.

Nota:

  • Ogni servizio di autenticazione è supportato dal proprio archivio dati
  • Ogni servizio di autenticazione può emettere un token che conosce solo il suo archivio di dati

Ecco un esempio minimale del problema:

Using the Microservices Architecture

We have a Master API Service that delegates all requests to the requested service

We have two Authentication Services that sit behind the Master API Service
    Auth Service 'A'
    Auth Service 'B'

If 'A' issued an authentication token the User 
    The token will be stored in a JWT
    The JWT will be signed by the unique KEY to service 'A' only

The User makes an authentication request using their issued token
    How does the Master API Service know which Auth Service it should validate the 
    token against?

Approcci a cui abbiamo pensato:

  • Approccio A: memorizza alcuni metadati nel reclamo JWT che contiene informazioni utili relative a quale servizio di autorizzazione l'ha emesso.
    • Problema: ogni servizio di autenticazione firma il JWT in modo diverso. Questo ci riconduce al problema originale.
  • Approccio B: emettere richieste di autenticazione per ogni microservizio di autenticazione e se uno convalida le attestazioni, allora deve contenere il token
    • Problema: questo elimina lo scopo dei microservizi

Qualcuno può far luce su questo problema? Forse stiamo solo pensando troppo alla soluzione.

    
posta Tdorno 21.07.2017 - 04:40
fonte

1 risposta

1

Il token non ha è l'unico dato inviato all'utente quando viene emesso il token. È molto comune includere un'intestazione o un cookie che descrive il meccanismo di autenticazione o l'origine del token di autenticazione, quindi aggiungerei un cookie X-Auth-Issuer che verrebbe inviato all'utente quando viene emesso il JWT e l'utente continuerà per inviare quel cookie al master con ogni richiesta. Il master dovrebbe cercare il valore del cookie in un'origine dati o configurazione per decidere quale servizio di autenticazione è stato emesso dal JWT.

Il registro dei servizi non è raro con i servizi di autenticazione centrale (ad es. CAS ) . I servizi sono conosciuti in anticipo in modo che nulla possa iniziare a presentarsi come servizio di autenticazione.

    
risposta data 21.07.2017 - 04:48
fonte

Leggi altre domande sui tag