Система RBAC с двумя параметрами

Я ищу пример или лучшие практики для системы RBAC с двумя параметрами. Вместо того, чтобы просто иметь пользователя, связанного с ролью, и эту роль, связанную с группой разрешений; пользователь может быть связан с ролью «для конкретного проекта», и тогда пользователь может иметь разрешения этой роли только для этого проекта (или для других проектов, для которых пользователь выполняет эту роль). Пользователь может иметь определенную роль в одном проекте и другую роль в другом проекте; разрешения, предоставляемые роли, согласованы для каждого проекта; и разрешения пользователя для проекта основаны на роли, которую пользователь имеет в проекте.

(Если это имеет значение, я пытаюсь ограничить доступ к страницам, где содержимое страницы разрабатывается с помощью параметра URL-запроса, который устанавливает идентификатор проекта через инструкцию GET.)

ABAC выглядит многообещающим, но у меня возникают проблемы с обволакиванием головы. Я понимаю, что атрибут пользователя определяет, имеет ли пользователь роль (и / или разрешения). В моем случае кажется, что я мог бы рассматривать проект как «пользователь», а мой пользователь как атрибут проекта (true, если мой пользователь держит роль для этого проекта или false, если нет)