Мы используем инфраструктуру ACL Spring Security в сочетании с App Engine Datastore. Мы не используем низкоуровневый API хранилища данных, а используем платформу Objectify для доступа к хранилищу данных. Нам необходимо преобразовать модель ACL Spring Security (подходящую для СУБД) в модель, более подходящую для объектно-ориентированного хранилища данных без схемы. Пока что мы получили две сущности, описанные ниже.
Acl
- id: Long
- domainObject: Key (предок / родитель)
- записи: Список ‹AclEntry› (встроенный)
- владелец: String
AclEntry
- sid: String
- принципал: логическое
- маска: int
- предоставление: логическое
Почти каждый раз, когда ACL извлекается известным объектом domainObject (не по идентификатору ACL), поэтому мы решили использовать объект домена в качестве предка для данного ACL, чтобы мы могли использовать запрос предка (строго согласованный) и получать максимальную отдачу. актуальные данные, которые имеют решающее значение в случае ACL
Дело в том, что такой модели недостаточно для запросов типа «К каким [объектам] имеет доступ данный пользователь (sid)?» где [entity] может быть любой доступной сущностью, такой как проект, группа, ...
Есть ли у кого-нибудь опыт работы с Spring Security ACL в базе данных NoSQL, особенно в App Engine Datastore? Любой намек будет оценен по достоинству.