Im ищет пример или лучшие практики для системы RBAC с двумя параметрами. Вместо того, чтобы просто иметь пользователя, связанного с ролью, и эту роль, связанную с группой разрешений; пользователь может быть связан с ролью "для конкретного проекта", и тогда пользователь может иметь разрешения этой роли только для этого проекта (или для других проектов, для которых пользователь выполняет эту роль). Пользователь может иметь определенную роль в одном проекте и другую роль в другом проекте; разрешения, предоставляемые роли, согласованы для каждого проекта; и разрешения пользователей для проекта основаны на роли, которую пользователь имеет в проекте.
(Если это имеет значение, я пытаюсь ограничить доступ к странице, когда содержимое страницы разрабатывается с помощью параметра запроса URL, который устанавливает идентификатор проекта через инструкцию GET.)
ABAC выглядит многообещающим, но у меня возникают проблемы с обволакиванием вокруг него. Я понимаю, что атрибут users определяет, имеет ли пользователь роль (и/или разрешения). В моем случае кажется, что я мог бы рассматривать проект как "пользователь", а мой пользователь как атрибут проекта (true, если мой пользователь имеет роль для этого проекта или false, если нет)
Если вы хотите придерживаться стандарта RBAC, вам придется использовать разные роли для разных проектов. Например, если роль "admin" используется в проектах "P1" и "P2", вы можете создать роль "P1: admin" и другую роль "P2: admin".
ABAC - это еще одна возможность. Однако, если я правильно вас понимаю, неправильно утверждать, что "атрибут пользователя определяет, имеет ли пользователь роль (и/или разрешения)". В ABAC есть только атрибуты (в том смысле, что роли являются атрибутами), что обеспечивает большую гибкость, чем RBAC. В запросе вы можете иметь атрибут, представляющий проект ( "P1" или "P2" ), и другой атрибут, представляющий роль для этого конкретного проекта ( "admin" ). Правильно указанная политика сможет распознать, что вы ссылаетесь на роль "admin" как часть проекта "P1" , например.