Ми плануємо перетворити систему нашої компанії в систему, що базується на мікропослугах. Ці мікросервіси будуть використовуватися нашими власними внутрішніми додатками компанії та сторонніми партнерами, якщо це потрібно. Один для бронювання, один для продуктів тощо.
Ми не впевнені, як поводитися з ролями та сферами застосування. Ідея полягає у створенні 3 основних ролей користувачів, таких як адміністратори, агенти та кінцеві користувачі, а також дозволити споживчим програмам при необхідності точно налаштувати сфери.
- Адміністратори можуть створювати, оновлювати, читати та видаляти всі ресурси за замовчуванням (для своєї компанії).
- Агенти можуть створювати, оновлювати та читати дані для своєї компанії.
- Кінцеві користувачі можуть створювати, оновлювати, видаляти та читати дані, але не можуть отримати доступ до тих самих кінцевих точок, що й агенти чи адміністратори. Вони також зможуть створювати або змінювати дані, лише не на тому ж рівні, як агенти чи адміністратори. Наприклад, кінцеві користувачі можуть оновлювати чи читати інформацію свого облікового запису, так само як агент зможе це зробити для них, але вони не можуть бачити чи оновлювати адміністративні нотатки.
Скажімо, агенти за замовчуванням можуть створювати, читати та оновлювати кожен ресурс для своєї компанії, і це їх максимальний обсяг, який можна запросити на їх маркер / сесію, але розробники клієнтського (API-споживача) програми вирішили, що один з їх агентів може читати і створювати лише певні ресурси.
Чи краще впоратися з цим у нашій внутрішній безпеці, і нехай вони записують ці дані в нашій базі даних, або дозвольте клієнтам обробляти це внутрішньо, запитуючи маркер із меншим обсягом, і нехай вони напишуть, який агент матиме, який обсяг у своїй базі даних ? Таким чином нам слід було б відстежувати лише сфери токенів.
Мінус цього полягає в тому, що нашій команді також потрібно буде створити налагоджені механізми доступу у наших внутрішніх програмах.
При такому способі мислення мікрослужби та їх авторизаційна система не повинні турбуватися з потребами клієнтів, оскільки вони є лише споживачами, а не частиною системи (хоча деякі з цих споживачів - наші власні внутрішні програми)?
Чи хороша ця делегація?
payment:[read]
, у продавцяpayment: [create]
. Ви агрегуєте дозволи в цьому випадку?