Проблема: у меня есть набор информации о том, что некоторым пользователям приходится обращаться к ним через мое веб-приложение. Скажем, что у меня есть ресурсы A, B, C того же типа T, а пользователями являются X, Y, Z. В бизнесе указано, что пользователь может получить доступ к этим ресурсам, как в приведенной ниже таблице.
Пользователь → Ресурсы
X → A
Y → AC
Z → ABC
Пример реального мира будет примерно таким:
Другое дело, что в любой момент пользователю X может быть предоставлен доступ к Hypermarkets из Нью-Йорка тоже.
Вопрос: Как реализовать систему авторизации, чтобы она позволяла мне предоставлять доступ к определенному набору ресурсов?
Мои первые идеи: поскольку я собираюсь использовать ASP.NET MVC и веб-API, мои первые мысли заключались в использовании полномочий -Based. После этого я нашел эту статью о том, как расширить понятие роли -Based авторизации на так называемую авторизацию "Activity" -Based. Но даже это решение не подходит для моего бизнеса, потому что в моем коде у меня должна быть одна функция, называемая GetAllHypermarkets
без параметров, которая вернет все гипермаркеты, которые пользователю разрешено видеть. Например, для пользователя X он вернет только гипермаркеты из Лос-Анджелеса. Как я могу это достичь?
Есть много смешных терминов, которые могут вам помочь:
Я думаю, что каждый хочет иметь именованное решение для контроля доступа со стороны специалистов по безопасности, поэтому огромное количество имен с трудными для понимания спецификациями...
AFAIK из этих ABAC является наиболее разработанным решением. Например, существует даже язык разметки, который поддерживает ABAC... Я предлагаю вам использовать google или https://security.stackexchange.com/ для получения дополнительной информации, потому что я не эксперт по безопасности, поэтому у меня, вероятно, неправильная информация об этих условиях. Я бы послал вопрос типа "что такое различие" на ваше имя, но они будут пинать мою задницу с 1000 downvotes, я думаю...