Выдача прав в зависимости от ресурса в Asp.net core

при решении на взгляд не сложной задачи по выдачи прав, формулировка который звучит так: "Менеджер имеет права на чтение заказа только если он назначен на данный заказ".

Эту проблему я попытался решить с помощью своего сервиса разрешений PermissionService где определены методы проверки с подобной сигнатурой:

bool CanGetOrder(string userName, int orderId)

В данном методе на основе бизнес-правил я проверяю является ли пользователь userName менеджером, и назначен ли она на заказ.

Так же на странице msdn нашел данную статью которая описывает авторизацию на основе ресурсов. Я попытался использовать данный материал в решении задачи, но меня беспокоит что бизнес-правила, те самые проверки будут зависеть от фреймворка.

Бизнес-правил по выдаче прав может много, ролей в системе уже несколько, и каждое действие почти зависит от этих прав.

Например "Менеджер может редактировать значения позиций заказа только если он назначен на заказ, и заказ в статусе Не оформлен"

Входе разработки эти правило будут изощряться и усложняться, и хотелось бы решить проблему, что бы в будущем было легче ее сопровождать.

В данных примерах я привел аналогии существующим.

Во время написание вопроса возникла идея совместить два способа, таким образом инвертировать зависимость.

Так же узнал про ABAC, которая может решить данные задачи, но я не смог найти его реализацию на asp.net core

Как данная задача решается в сложных системах?


Ответы (0 шт):