Как предоставить доступ к конкретным ресурсам?

1

Проблема: у меня есть набор информации о том, что некоторым пользователям приходится обращаться к ним через мое веб-приложение. Скажем, что у меня есть ресурсы A, B, C того же типа T, а пользователями являются X, Y, Z. В бизнесе указано, что пользователь может получить доступ к этим ресурсам, как в приведенной ниже таблице.

Пользователь → Ресурсы
X → A
Y → AC
Z → ABC

Пример реального мира будет примерно таким:

  • Пользователь X может видеть все гипермаркеты из Лос-Анджелеса
  • Пользователь Y может видеть все гипермаркеты из Лос-Анджелеса и Чикаго
  • Пользователь Z может видеть все гипермаркеты из Лос-Анджелеса, Чикаго и Нью-Йорка

Другое дело, что в любой момент пользователю X может быть предоставлен доступ к Hypermarkets из Нью-Йорка тоже.

Вопрос: Как реализовать систему авторизации, чтобы она позволяла мне предоставлять доступ к определенному набору ресурсов?

Мои первые идеи: поскольку я собираюсь использовать ASP.NET MVC и веб-API, мои первые мысли заключались в использовании полномочий -Based. После этого я нашел эту статью о том, как расширить понятие роли -Based авторизации на так называемую авторизацию "Activity" -Based. Но даже это решение не подходит для моего бизнеса, потому что в моем коде у меня должна быть одна функция, называемая GetAllHypermarkets без параметров, которая вернет все гипермаркеты, которые пользователю разрешено видеть. Например, для пользователя X он вернет только гипермаркеты из Лос-Анджелеса. Как я могу это достичь?

Теги:
rest
asp.net-web-api
authorization

1 ответ

1
Лучший ответ

Есть много смешных терминов, которые могут вам помочь:

  • ABAC - управление доступом на основе атрибутов
  • PBAC - управление доступом на основе политик
  • RAdAC - управление доступом с учетом риска
  • SitBAC - управление доступом на основе ситуации

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

AFAIK из этих ABAC является наиболее разработанным решением. Например, существует даже язык разметки, который поддерживает ABAC... Я предлагаю вам использовать google или https://security.stackexchange.com/ для получения дополнительной информации, потому что я не эксперт по безопасности, поэтому у меня, вероятно, неправильная информация об этих условиях. Я бы послал вопрос типа "что такое различие" на ваше имя, но они будут пинать мою задницу с 1000 downvotes, я думаю...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню