Autentykacja i autoryzacja w systemie opartym o usługi

0

Dzień dobry.
Mam taki przypadek.
Migracja Monolitu do architektury modułowej.
Sytuacja zastana: Logowanie do monolitu -> user + password - zapisane w bazie danych.
Sytuacja przejściowa: Mamy monolit i jeden nowy moduł, w którym od autentykacji używamy jwt z keycloacka
Mamy nginx, front najpierw strzela do nowego modułu po uprawnienia (czyli grupu z bazy danych), zwraca jet do frontu dzięki czemu front wie, które elementy ui wyświetlić + ten moduł "loguje się" do monolitu i zwraca jession, aby front mógł też używać monolitu.

Chcemy wyciągnąć kolejny moduł z monolitu.
Dodaliśmy api-gateway, przez który będziemy rozdzielać ruch.

Teraz stoję przed pytaniem, czy trzymać role w Keycloacku i wysyłać je w jwt do modułu (czyli robić i autentykację i autorycję tym poziomie).
Czy użyć keycloacka tylko do autentykacji (czyli zalogowania), a autoryzację (czyli role i uprawniania) zostawić per moduł.

Może macie jakieś doświadczenia w tym temacie, albo jakie dobre praktyki?

3

Oba podejścia maja plusy i minusy. Ale to.jest bardziej pytanie biznesowe: kto nadaje uprawnienia? Czy admin ma dostep tylko do swojego modulu czy jest globalny? Czy to jest aplikacja dedykowana Czy korzysta z niej ileś tam klientów?

1
Black007 napisał(a):

Teraz stoję przed pytaniem, czy trzymać role w Keycloacku i wysyłać je w jwt do modułu (czyli robić i autentykację i autorycję tym poziomie).
Czy użyć keycloacka tylko do autentykacji (czyli zalogowania), a autoryzację (czyli role i uprawniania) zostawić per moduł.

Wszystko zależy od aplikacji którą masz, nie me jednej rady dobrej na wszystko. Musiałbyś więcej opisać co Twoja aplikacja robi, i jaka jest logika związana z uprawnieniami. Wtedy można by się zastanowić nad tym gdzie ją dać.

Black007 napisał(a):

Czy użyć keycloacka tylko do autentykacji (czyli zalogowania), a autoryzację (czyli role i uprawniania) zostawić per moduł.

Rada dla Ciebie ode mnie - zastosuj to rozwiązanie, które będzie łatwiej zmienić (lub usunąć) w przyszłości.

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