Я строю сервер обмена данными, используя REST-подобный API.Это не совсем RESTful, потому что сервер удерживает какое-то состояние, но я отвлекся.Сеансы создаются с использованием комбинации HTTP-аутентификации и предварительно назначенного ключа API.Ключ API позволяет серверу контролировать, к каким ресурсам клиент может получить доступ и какие действия он может выполнять при его использовании.
- Может быть несколько ключей на пользователя, но только один на сеанс.
- Некоторые ключи должны иметь «плоские» разрешения: они могут только просматривать и манипулировать данными, которые находятся на них.сохранены или иным образом созданы.
- Другие ключи имеют иерархические или ролевые разрешения: они могут делать все, что могут делать плоские ключи, помимо просмотра и манипулирования подчиненными им ключами.
- ВВ будущем некоторым ключам могут быть предоставлены специальные привилегии для создания, регистрации и делегирования своих собственных подчиненных ключей.
- В целом, весь доступ ко всем ресурсам будет предоставляться по принципу «отказать по умолчанию».
С учетом этих требований и с учетом перспективности на будущее, какие варианты делаютЯ должен сделать это?Я рассмотрел множество решений, основанных как на ACL, так и на контроле доступа на основе ролей, но ни одно из решений, с которыми я сталкивался, не способно осуществить такое детальное управление доступом.