Mikroserwisy a dostęp tylko do swoich zasobów

0

Witajcie mam pytanie do was.
Posiadam 2 mikroseriwsy jeden od zarządzania restauracją a drugi do realizacji zamówień.

Ten drugi jeżeli jest to pracownik to musi zapytać pierwszego czy jest on pracownikiem tej restauracji do której chce dostęp a jeżeli jak mówi architektura mikroserwisów powinny działać niezależnie od siebie ale w tym wypadku będzie lipa. Jak powinno być to zorganizowane żeby nie był to modularny monolit?

2

Jest kilka opcji.
Możesz np trzymać kopie danych o pracownikach w mikroserwisie zamówień. Za kazdym razem jak robisz zmiane o pracownikach, musisz o tym powiadomic (np wysylac wiadomosc). Albo inaczej zorganizowac funkcjonalnosci i kto jest odpowiedzialny za co.

Dodam, ze jesli myslisz, ze jest z tym za duzo zachodu i to jest tego nie warte.... To dlatego ze mikroserwisy nie sa rozwiazaniem wszystkich ale specyficznych problemow. M.in. ze skalowalnoscia czy deploymentem niezaleznym od siebie.

1

undefined> ##### Artur Kowalski napisał(a):
Witajcie mam pytanie do was.

Posiadam 2 mikroseriwsy jeden od zarządzania restauracją a drugi do realizacji zamówień.
Ten drugi jeżeli jest to pracownik to musi zapytać pierwszego czy jest on pracownikiem tej restauracji do której chce dostęp a jeżeli jak mówi architektura mikroserwisów powinny działać niezależnie od siebie ale w tym wypadku będzie lipa. Jak powinno być to zorganizowane żeby nie był to modularny monolit?

Bardzo to lakonicznie opowiedziałeś.
Dla mnie nie jest oczywiste czy tylko dwa, jeśli już patrzymy oczami mikroserwisowymi.
Zwłaszcza to "zarządzanie" to jest bardzo wieloznaczne słowo

Edit: i druga myśl: obawiasz się niezgodności z teorią, np o "mikromonolit", a zupełnie zapomniałeś jakie miejsce (również w teorii) ma autentykacja i autoryzacja - a to dokładnie twój temat.
Czyli wracając do modułu zarządzania, tzreba wyraźnie mówić jaka część w/w to a&a (lub wydzielić trzeci??? nie wiem)

3

Jeżeli dobrze zrozumiałem, to prawdopodobnie powinieneś przesyłać w zapytaniu informację na temat uprawnień danej osoby. Np. poprzez JWT. Wtedy nadawaniem tych ról/uprawnień zajmuje się jeden mikroserwis, a drugi już tylko sprawdza czy osoba, która uderza do serwisu może to zrobić - sprawdzając czy informacje w tokenie na to wskazują. Nie trzeba wtedy za każdym razem pytać innych serwisów o to.

0
mar-ek1 napisał(a):

Jeżeli dobrze zrozumiałem, to prawdopodobnie powinieneś przesyłać w zapytaniu informację na temat uprawnień danej osoby. Np. poprzez JWT. Wtedy nadawaniem tych ról/uprawnień zajmuje się jeden mikroserwis, a drugi już tylko sprawdza czy osoba, która uderza do serwisu może to zrobić - sprawdzając czy informacje w tokenie na to wskazują. Nie trzeba wtedy za każdym razem pytać innych serwisów o to.

Mam zrobiony serwer do autoryzacji itp tylko teraz jeżeli użytkownik loguje się i chce zobaczyć zamówienia restauracji to musi on sprawdzić czy ten użytkownik jest on zatrudniony w tej restauracji. I że sobie nie może przeglądać zamówień innej restauracji

1

undefined> ##### Artur Kowalski napisał(a):

mar-ek1 napisał(a):

Jeżeli dobrze zrozumiałem, to prawdopodobnie powinieneś przesyłać w zapytaniu informację na temat uprawnień danej osoby. Np. poprzez JWT. Wtedy nadawaniem tych ról/uprawnień zajmuje się jeden mikroserwis, a drugi już tylko sprawdza czy osoba, która uderza do serwisu może to zrobić - sprawdzając czy informacje w tokenie na to wskazują. Nie trzeba wtedy za każdym razem pytać innych serwisów o to.
Mam zrobiony serwer do autoryzacji itp tylko teraz jeżeli użytkownik loguje się i chce zobaczyć zamówienia restauracji to musi on sprawdzić czy ten użytkownik jest on zatrudniony w tej restauracji. I że sobie nie może przeglądać zamówień innej restauracji

Wygląda, jakby serwer aurozycayjny miał za ubogie założenia projektowe ???
gdzieś tam powinna się pojawić Rola "pracuje w ..."

5

No i teraz użytkownik logując się dostaje token, w którym jest np. zapisane jakie restauracje może widzieć (w JWT jak sam sobie coś zmieni po stronie klienta to token nie będzie poprawny i aplikacja powinna zwrócić błąd). I teraz serwis do zamówień po prostu odczytuje to z tokena, który jest w każdym zapytaniu przesyłany. Jak robi zamówienie na restaurację, którą ma dostępną to ok. Jak nie to 403 i nara.

1 użytkowników online, w tym zalogowanych: 0, gości: 1