2015-02-19 27 views
10

Ho intenzione di sviluppare un sistema di e-commerce di microservizi come prova del concetto. L'architettura è composta da 3 componenti:Sessioni in un'architettura Microservice per un sistema E-Commerce

  • una base javascript applicazione singola pagina, che invia le richieste di AJAX per

  • un server (gateway API) con un'API REST che alimenta i dati JSON ricevuti chiamando altri servizi

  • 3 servizi: CatalogProvider, CustomersProvider, CheckoutProvider

per ora il servizio sono tutti endpoint API di Magento Shopsystem.

Quando provo ad accedere a un utente nel loro sistema Magento inviando una richiesta all'API REST ovviamente il server non ricorda la sessione quando invia la richiesta successiva.

Inoltre gestisco il carrello della spesa sul lato server con Magento e aggiungo/aggiorna/rimuovi elementi dalle chiamate REST Api. Qui, anche gli elementi aggiunti si perdono quando si invia la richiesta successiva man mano che la sessione si perde.

Quindi la mia domanda è:

Quali sono le possibili approcci per risolvere i problemi riguardanti la gestione delle sessioni in un'architettura Microservice?

+0

Ciao, hai trovato una buona soluzione al tuo problema? È possibile condividere con gli altri? Hai un po 'di tempo per testare/implementare una proposta di risposta finale se inizio una nuova taglia? Il problema in sé mi interessa ma attualmente non ho un caso o il tempo per testarlo :) Grazie – JonaPkr

+0

Non direttamente collegato a php ma ... http://presos.dsyer.com/decks/microservice-security.html –

risposta

3

Suggerisco di esaminare l'autenticazione basata su token.

Inoltre, token Web JSON potrebbero essere di tuo interesse.

+0

Grazie per il tuo suggerimento Conosci qualche utile e buona fonte da leggere su questi concetti? – Rouzbeh

0

È possibile mantenere gli stati utente nella tabella.

Quando gli utenti effettuano il login, creano un ID univoco e lo memorizzano nella tabella con l'ora corrente e l'IP del client, in lato client creano una coppia di valori chiave e la memorizzano nei cookie. Usalo come sessione.

Ora ci sono molte cose per verificare l'esistenza dell'utente.

0

se u sta utilizzando jvoid che è un progetto di schgoni (proprietario di Magento) si creano id di sessione e lo memorizza all'interno mysql ed è già modulo built sicurezza primavera

Per l'autenticazione Microservice i OAuth2 architettura di sicurezza basato sarebbe meglio di me.Utilizzando i token di oauth alle chiamate di resto verrebbe risolto il problema di autenticazione

0

Che ne dici di creare un altro microservizio - SessionProvider? Il servizio sarà responsabile della creazione e salvataggio di stati e variabili di sessione, ogni sessione verrà identificata dall'ID di sessione univoco, altri servizi potrebbero interagire con SessionProvider tramite questo ID.