Planujemy przekształcić system naszej firmy w system oparty na mikrousługach. Z tych mikro-usług będą korzystać nasze własne wewnętrzne aplikacje firmy oraz w razie potrzeby partnerzy zewnętrzni. Jeden do rezerwacji, drugi do produktów itp.
Nie jesteśmy pewni, jak radzić sobie z rolami i zakresami. Chodzi o to, aby utworzyć 3 podstawowe role użytkowników, takie jak administratorzy, agenci i użytkownicy końcowi, i pozwolić aplikacjom konsumenckim na dostosowanie zakresów w razie potrzeby.
- Administratorzy mogą domyślnie tworzyć, aktualizować, czytać i usuwać wszystkie zasoby (dla swojej firmy).
- Agenci mogą tworzyć, aktualizować i odczytywać dane swojej firmy.
- Użytkownicy końcowi mogą tworzyć, aktualizować, usuwać i odczytywać dane, ale nie mają dostępu do tych samych punktów końcowych co agenci lub administratorzy. Będą także mogli tworzyć lub modyfikować dane, ale nie na tym samym poziomie co agenci lub administratorzy. Na przykład użytkownicy końcowi mogą aktualizować lub czytać informacje o swoim koncie, tak samo jak agent będzie mógł to dla nich zrobić, ale nie widzą ani nie aktualizują notatek administratora.
Powiedzmy, że agenci domyślnie mogą tworzyć, odczytywać i aktualizować każdy zasób dla swojej firmy i to jest ich maksymalny zakres, którego można żądać dla tokena / sesji, ale programiści aplikacji klienckiej (API-konsument) zdecydowali, że jeden z ich agentów może czytaj i twórz tylko niektóre zasoby.
Czy lepiej jest radzić sobie z tym w naszym wewnętrznym bezpieczeństwie i pozwolić im zapisywać te dane w naszej bazie danych, czy pozwolić klientom obsługiwać to wewnętrznie, żądając tokena o mniejszym zakresie, i pozwól im napisać, który agent będzie miał zakres w swojej bazie danych ? W ten sposób musielibyśmy śledzić tylko zakresy tokena.
Wadą tego jest to, że nasz zespół musiałby również stworzyć mechanizmy dostępu dostosowane do naszych wewnętrznych aplikacji.
Przy takim sposobie myślenia, mikrousługom i ich systemowi autoryzacji nie należy przejmować się potrzebami klientów, ponieważ są oni tylko konsumentami, a nie częścią systemu (nawet jeśli niektórzy z tych konsumentów są naszymi wewnętrznymi aplikacjami)?
Czy ta delegacja jest dobrym podejściem?
payment:[read]
, sprzedawca mapayment: [create]
. Czy agregujesz uprawnienia w tym przypadku?