Crea il flusso di account nell'architettura dei microservizi con diversi servizi per account e auth

1

Sto sviluppando un'applicazione basata sull'architettura dei microservizi. Attualmente il mio obiettivo è implementare il flusso "Crea utente". Ma non sono abbastanza sicuro di quale sia il modo giusto per farlo.

Il mio problema è il seguente:

Voglio avere due microservizi - Account e Auth. L'account sarebbe responsabile per i dati relativi all'account come - nome, cognome, indirizzi, e-mail ecc. L'autore sarebbe responsabile della memorizzazione di nomi utente / password / ruoli e della generazione di token.

Sembra che il servizio Account debba solo archiviare solo le informazioni relative agli account e, pertanto, non dovrebbe memorizzare password e ruoli perché questo è qualcosa correlato al servizio di autenticazione. Tuttavia, quando qualcuno crea un utente, desidero inviare "attiva il collegamento dell'account" all'email specificata relativa all'account che si sta creando. Ciò significa che dovrei memorizzare i dati relativi a account e password / ruoli da qualche parte e contrassegnare questi dati come "non attivi" finché non viene seguito il collegamento di attivazione. E per me la domanda difficile è: come e dove dovrei conservarlo.

Attualmente ho le seguenti idee:

  1. Quando viene creato un account per l'utente, Account microservice riceve tutti i dati relativi all'account + password / ruoli e lo salva da qualche parte con un segno che l'account e l'utente non sono ancora attivi + invia il link di attivazione. Quindi, quando l'utente segue il collegamento, l'account microservice contrassegna i dati dell'account come "attivi", elimina ruoli e password e inoltra una richiesta al servizio di autenticazione per salvare ruoli / password relativi a questo account. Non mi piace questo approccio finché mi sembra che il servizio account non debba conoscere e non debba memorizzare ruoli e password.

  2. Quando viene creato un account per l'utente, il servizio microservizi dell'account riceve tutti i dati relativi all'account + nome utente / password / ruoli. Salva i dati relativi all'account e lo contrassegna come 'non attivo' + invia richiesta al servizio di autenticazione per salvare nome utente / password / ruoli corrispondenti, Auth salva questi dati e li contrassegna come 'non attivi' + Account microservice invia il link di attivazione all'e-mail . Pertanto, il servizio microservizi dell'account non memorizza password e ruoli Quindi, quando l'utente segue il link di attivazione, il microservizio dell'account contrassegna i dati dell'account come "attivi" e inoltra una richiesta al servizio di autenticazione che contrassegna anche il nome utente / password / ruolo corrispondente come "attivo". Questo approccio sembra essere un modo migliore di implementare.

Sono abbastanza sicuro di perdere alcune altre opzioni che sono le migliori soluzioni al problema.

Qualcuno, che ha esperienza simile, può dare un consiglio su questo?

Gradirei davvero qualche aiuto in merito a questo,

Grazie

    
posta Andrey Yaskulsky 16.03.2018 - 15:39
fonte

0 risposte