Verifica del token di accesso in ogni servizio di un'architettura di Microservice

2

Sto lavorando su un'applicazione implementata utilizzando l'architettura dei microservizi. Esiste un servizio di autenticazione (A) che utilizza lo standard jwt e ci sono altri servizi nell'applicazione come S1, S2, S3 e così via. Ora, per esempio, S1 riceve una richiesta, dovrebbe convalidare il token per vedere se l'utente è autorizzato o meno. La convalida può essere ottenuta con:

  • Invio del token da S1 a A, quindi A convalida il token e invia il risultato a S1 (che è un tipo di overhead)
  • Convalidare il token all'interno di S1 (che è un'azione duplicata all'interno di ogni servizio, richiede anche chiavi segrete o chiavi pubbliche / private all'interno di ciascun servizio, per la firma / verifica)

Non sto chiedendo come funzionano esattamente questi approcci. Le domande sono, qual è quella migliore? O qual è la migliore pratica in questa situazione?

    
posta Hamid Mohayeji 17.09.2017 - 09:10
fonte

2 risposte

2

Convalidare il token nel servizio controllando la firma.

L'intero punto di invio di un jwt con le attestazioni è che NON devi premere nuovamente il servizio di autenticazione.

In questo modo si introduce un collo di bottiglia alla tua architettura e si vanificano alcuni dei motivi per cui andare con i microservizi

    
risposta data 17.09.2017 - 11:07
fonte
0

Fai entrambi. Ma diversamente. Convalidare il JWT nel servizio di autenticazione una volta. Le operazioni con le chiavi asimmetriche sono lente. Fallo una volta. Quindi, nel servizio auth, crittografare o HMAC il token con AES, utilizzando una chiave privata interna nota solo ai micro servizi. I micro servizi possono utilizzare la chiave AES condivisa per ottenere rapidamente la validità del token come autentica dal gateway del servizio di autenticazione.

Ottieni le prestazioni che desideri e la sicurezza di cui hai bisogno senza troppe cose in eccesso.

Se desideri un risultato finale simile con un'implementazione molto più elaborata, sentiti libero di utilizzare i certificati client TLS internamente tra il servizio auth e i servizi micro.

    
risposta data 20.11.2018 - 19:06
fonte