Система ролей и разрешений не-RBAC: роль со свойствами

Мы в настоящее времяпроектирование a Роли пользователей и система разрешений в нашем веб-приложении (ASP.NET), и кажется, что у нас есть несколькослучаи тотне подходит в классическомУправление доступом на основе ролей (RBAC), Я опубликую несколько вопросов, каждый из которых посвящен конкретному делу. Это мой второй вопрос (первый вопрос здесь:Система ролей и разрешений не-RBAC: проверка города пользователя).

У нас есть следующий случай: нам нужно реализоватьРоль менеджера в нашем веб-приложении. Однако менеджер можетпринадлежат одной или нескольким компаниям (в большой группе компаний, для которой мы создаем это веб-приложение). Скажем, может быть «Менеджер компаний А и Б», «Менеджер компании С» и т. Д.

В зависимости от компаний, к которым принадлежит менеджер, он имеетдоступ для определенных операций: например, он может общаться с клиентами только тех компаний, к которым он принадлежит. То есть «менеджер компаний A и B» может иметь контакты только с клиентами компаний A и B, но не с клиентами компании C. Он также может просматривать страницы с подробной информацией клиентов компаний A и B, но не C и т. Д. ,

Похоже, что это дело относится к RBAC. Однако это не совсем так. Нам нужно будет создатьManagerRole класс это будет иметьНедвижимость компании То есть это будет не просто роль в качестве набора разрешений (как в классическом RBAC), ароль со свойствами!

Это был только один пример роли, обладающей свойствами. Будут другие: например,Роль администратора это также будет принадлежать ряду компаний, а также будет иметь другие пользовательские свойства.

Это означает, что у нас будет иерархия или роли классов:


class Role – base class  
class ManagerRole : Role  
    List Companies  
class AdministratorRole : Role  
    List Companies  
    Other properties

Мы исследовали чистый RBAC и его реализацию в нескольких системах, ине найдено систем показываяиерархия или роликаждый из которых имеет свои свойства. В RBAC роли - это просто наборы разрешений.

Мы могли бы моделировать наши случаи, используяразрешение со свойствамикак ManagerPermission, AdministratorPermission, но у этого есть много недостатков, главным из которых является то, что мы не сможем назначить роль типа «Менеджер компаний A и B» непосредственно пользователю, но должны будем создать роль, содержащую Разрешение менеджера для компаний A и B… Более того, «менеджер», скорее, скорее «роль» (должность в компании), чем «разрешение» с лингвистической точки зрения.

Буду благодарен за любые идеи на эту тему, а также за любой опыт в этой области!

Спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос