Narysowałem sobie projekt api jakie chce przygotować
Chcę was prosić o pomoc z poprawnym zaprojektowaniem takiego systemu.
Klientów korzystających z API tez muszę napisać, ale to inny temat. Na razie wiadomo tylko tyle ze będzie aplikacja desktopowa i aplikacja mobilna, może kiedyś tez strona www. Od strony API planuje zrobić api uwierzytelniające/autoryzujace które będzie miało swoją bazę użytkowników. W bazie tej będą loginy, hashe haseł i uprawnienia do roznych dostepnych dla uzytkownika aplikacji. Zarzadzanie tąbazą będzie również przez Authentication Api, administrator całego systemu będzie zarządzał uzytkownikami i ich uprawnieniami.
Powstanie rowniez kilka API aplikacyjnych (4 lub 5) . Wszystkie Api aplikacyjne beda podpiete pod baze aplikacyjna (niektóre bedą miały tam swoje tabele, inne beda roweniz korzystały ze wspólnych tabel)
Teraz wracając do projektu przedstawionego na rysunku. Widzę to tak:
-
użytkownik John Doe aby się uwierzytelnić wysyła login i hasło do Authentication API (1)
-
Authentication Api kontaktuje się z baza uzytkownikow i sprawdza dane dla loginu john-doe
-
Jeśli podane przez klienta dane sa poprawne to zwracany jest JWTToken w którym zawarta będzie uzytkownika john-doe (2)
-
klient potrzebuje wyciagnac faktury dla wybranego kontrahenta o id=123. W tym celu wysyła do api** Application 1 API **odpowiedzialnego za aplikacje fakturowania requesta na adres api/faktury?kontrahent=123 (3). W request przesyłany jest tez JWT
-
Application 1 Api po otrzymaniu tego requesta odczytuje z JWT nazwe uzytkownika i odpytuje Authentication Api czy uzytkownik o nazwie john-doe ma uprawnienia pozwalajace pobrac faktury tego kontrahenta (4).
-
Authentication API sprawdza w bazie czy uzytkownik john-doe posiada upranienia do akcji pobierania faktur (tutaj też chciałbym jakoś sprawdzić czy uzytkownik moze pobrać wszystkie faktury czy np ma uprawnienia tylko do pobrania okreąlonej ilości faktur)
-
zwracana jest informacja czy uzytkownik john-doe ma prawa do tej akcji kontrolera oraz np ile faktur moze pobrac, ewentualnie jeszcze jakies inne informacje na temat przyslugujących uprawnien(5)
-
Application 1 API na podstawie uprawnien pobiera dane z App Db i zwraca je użytkownikowi lub zwraca informacje o braku uprawnien (6)
Pozostałe aplikacje mają działać na podobnych zasadach.
Proszę o jakieś uwagi, wskazówki.Możliwe ze jakiś senior zrobiłby taki system w tydzień ale ja jestem poczatkujacy i błądzę po omacku :) Gdzieś czytałem ze tego typu problemach uzywa sie mikroserwisów, ale mam chyba jeszcze za małą wiedze zeby pójść w tym kierunku.