Стандартный способ управления доступом в многопользовательской службе - предоставить как можно больше методов обслуживания, где каждый метод службы имеет конкретные результаты и разрешения доступа.Контроль доступа на основе фильтрации данных вместо авторизации запроса
Например,
Moderator
уполномочен называтьGetModerationAwaitingPosts
метод сервиса для доступа сообщения от любого посетителя ожидает модерацииVisitor
уполномочен называтьGetOwnedPosts
метод обслуживания, чтобы получить доступ только свои собственные сообщения включая проекты и модерации, необходимые должностиVisitor
имеет право называтьGetModeratedPosts
метода обслуживания для доступа только замедлитель сообщения от всех посетителей
Но может быть и другой подход - метод одного службы GetPosts
запрашивать сообщения, что запрашивающий разрешено видеть.
Любой зарегистрированный пользователь имеет право называть этот метод.
Сообщения сначала фильтруются в соответствии с ролью вызывающего абонента.
Затем сообщения отфильтровываются в соответствии с параметрами, переданными в методе
GetPosts
или фильтруются на стороне клиента.
Этот подход используется, например, в службах передачи данных WCF через Interceptors.
Как подход к фильтрации данных на основе пользовательского метода обслуживания, названного и обработанного в разных архитектурах и методологиях, таких как SOA, REST, CQRS? Это твердое решение?
Существуют ли какие-либо книги/статьи, в которых разница между этими подходами подробно рассматривается?
Что касается меня, я нахожу это действительно странным и необычным, когда результаты запроса зависят от запрашивающего.
Как PEP -PDP работают, если любой пользователь имеет право сделать запрос «_Получить все записи, к которым мне разрешен доступ»? Допускается до сотни из миллиона записей. Будет ли PEP отправлять миллион записей в PDP, чтобы решить, к какому из них можно получить доступ? Или PDP всегда возвращается, поскольку любой пользователь имеет право сделать такой запрос? Тогда как это связано со второй частью вопроса о фильтрации данных? – Lightman