Sto facendo fatica a scegliere una strategia di autenticazione decente / sicura per un'architettura a microservizi. L'unico post SO che ho trovato sull'argomento è questo: Single Sign-On in Microservice Architecture
La mia idea qui è quella di avere in ogni servizio (es. Autenticazione, messaggistica, notifica, profilo ecc.) Un riferimento univoco a ciascun utente (abbastanza logicamente quindi il suo user_id
) e la possibilità di ottenere l'utente corrente id
se ha effettuato l'accesso.
Dalle mie ricerche, vedo che ci sono due possibili strategie:
1. Architettura condivisa
In questa strategia, l'app di autenticazione è un servizio tra l'altro. Ma ogni servizio deve essere in grado di rendere la conversione session_id
=> user_id
quindi deve essere semplice. Ecco perché ho pensato a Redis, che avrebbe archiviato la chiave: valore session_id:user_id
.
2. Architettura del firewall
In questa strategia, l'archiviazione delle sessioni non ha molta importanza, poiché è gestita solo dall'app di autenticazione. Quindi user_id
può essere inoltrato ad altri servizi. Ho pensato a Rails + Devise (+ Redis o mem-cache, o cookie storage, ecc.) Ma ci sono tonnellate di possibilità. L'unica cosa che conta è che Service X non dovrà mai autenticare l'utente.
Come si confrontano queste due soluzioni in termini di:
- sicurezza
- robustezza
- scalabilità
- facilità d'uso
O forse suggeriresti un'altra soluzione che non ho menzionato qui?
Mi piace di più la soluzione n. 1 ma non ho trovato molte implementazioni predefinite che mi garantirebbero il fatto che sto andando nella giusta direzione.
Spero che la mia domanda non venga chiusa. Non so davvero dove altro chiederlo.
Grazie in anticipo