2015-02-19 33 views
10

Mam zamiar stworzyć system e-Commerce mikroserwisu jako dowód koncepcji. Architektura składa się z 3 części:Sesje w architekturze Microservice dla systemu handlu elektronicznego

  • aplikacja oparta javascript pojedyncza strona, która wysyła żądania AJAX do

  • serwerze (API bramy) z API REST, która zasila danych JSON otrzymane przez wywołanie innych usług

  • 3 usługi: CatalogProvider, CustomersProvider, CheckoutProvider

Dotychczas usług wszystkie są punktami końcowymi API systemu Magento.

Kiedy próbuję zalogować użytkownika do niego system Magento, wysyłając żądanie do REST Api, oczywiście serwer nie pamięta sesji podczas wysyłania następnego żądania.

Zajmuję się również koszyk po stronie serwera z Magento i dodawać/aktualizować/usuwać elementy przez połączenia REST Api. Tutaj również dodane elementy gubią się podczas wysyłania następnego żądania, gdy sesja została zgubiona.

Więc moje pytanie brzmi:

Jakie są możliwe podejścia do rozwiązywania problemów dotyczących obsługi sesji w architekturze microservice?

+0

Witam, czy znalazłeś dobre rozwiązanie swojego problemu? Czy można dzielić się z innymi? Czy masz trochę czasu na przetestowanie/wdrożenie ewentualnej propozycji odpowiedzi, jeśli zacznę nową nagrodę? Sam problem mnie interesuje, ale obecnie nie mam ani przypadku ani czasu, aby go przetestować :) Dzięki – JonaPkr

+0

Nie bezpośrednio spokrewniony z php ale ... http://presos.dsyer.com/decks/microservice-security.html –

Odpowiedz

3

Proponuję zapoznać się z uwierzytelnianiem opartym na tokenie.

Ponadto żetony JSON Web również mogą być dla Ciebie interesujące.

+0

Dzięki za twoją sugestię. Czy znasz jakieś użyteczne i dobre źródła, aby przeczytać o tych koncepcjach? – Rouzbeh

0

Możesz zachować stany użytkowników w tabeli.

Kiedy użytkownicy logują się, twórz jeden unikalny identyfikator i przechowuj go w tabeli z aktualnym stemplem czasowym i adresem IP klienta, po stronie klienta utwórz parę wartości klucza i zapisz ją w ciasteczkach. Użyj go jako sesji.

Masz teraz wiele rzeczy do sprawdzenia istnienia użytkownika.

0

jeśli u używasz jvoid który to projekt schgoni (właściciel Magento) go utworzyć identyfikator sesji i zapisuje go wewnątrz mysql i ma już moduł wbudowane zabezpieczenia wiosna

przypadku uwierzytelniania microservice i OAuth2 oparty architektura bezpieczeństwa byłoby lepiej myślę. Używanie oauth tokenów w przypadku wywołania reszty rozwiąże problem auth

0

Co z utworzeniem jeszcze jednego mikroserwisu - SessionProvider? Usługa będzie odpowiedzialna za tworzenie i zapisywanie stanów sesji i zmiennych, każda sesja będzie identyfikowana przez unikalny identyfikator sesji, inne usługi mogą wchodzić w interakcje z SessionProvider przez ten identyfikator.