Детализированные разрешения для ресурсов на сервере REST API - PullRequest
4 голосов
/ 28 июня 2011

Я строю сервер обмена данными, используя REST-подобный API.Это не совсем RESTful, потому что сервер удерживает какое-то состояние, но я отвлекся.Сеансы создаются с использованием комбинации HTTP-аутентификации и предварительно назначенного ключа API.Ключ API позволяет серверу контролировать, к каким ресурсам клиент может получить доступ и какие действия он может выполнять при его использовании.

  • Может быть несколько ключей на пользователя, но только один на сеанс.
  • Некоторые ключи должны иметь «плоские» разрешения: они могут только просматривать и манипулировать данными, которые находятся на них.сохранены или иным образом созданы.
  • Другие ключи имеют иерархические или ролевые разрешения: они могут делать все, что могут делать плоские ключи, помимо просмотра и манипулирования подчиненными им ключами.
  • ВВ будущем некоторым ключам могут быть предоставлены специальные привилегии для создания, регистрации и делегирования своих собственных подчиненных ключей.
  • В целом, весь доступ ко всем ресурсам будет предоставляться по принципу «отказать по умолчанию».

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

1 Ответ

0 голосов
/ 01 марта 2012

В итоге я упростил системные требования: вместо того, чтобы использовать API-ключи в качестве идентификаторов сеансов, я в итоге прошел полный маршрут «RESTful» и проходил проверку подлинности при каждом запросе к бэкэнду LDAP, который был разработан для его обработки.

Для авторизации я использовал набор групп, назначенных пользователю в LDAP, в качестве «ролей», которые имеет пользователь.Он не так гибок, как оригинальный дизайн, но достаточно прагматичен, чтобы я мог изменить уровень приложений в будущем и не беспокоиться о переносе пользователей и разрешений после их настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...