App Engine数据存储上的Spring Security ACL

时间:2013-09-30 12:14:16

标签: google-app-engine spring-security google-cloud-datastore objectify spring-security-acl

我们正在将Spring Security ACL基础架构与App Engine数据存储区结合使用。我们不使用低级数据存储API,而是使用Objectify框架来访问Datatstore。我们需要将Spring Security ACL模型(适用于RDBMS)转换为更适合无模式面向对象数据存储的模型。到目前为止,我们最终得到了下面描述的两个实体。

ACL

  • id:长
  • domainObject:Key(祖先/父级)
  • 条目:列表< AclEntry> (嵌入)
  • owner:String

将AclEntry

  • sid:String
  • principal:boolean
  • mask:int
  • 授予:boolean

几乎每次ACL都被已知的domainObject(而不是ACL id)检索,因此我们决定使用域对象作为给定ACL的祖先,以便我们可以使用祖先查询(强一致性)并获取最新的数据,在ACL的情况下至关重要

问题在于,这样的模型不足以进行诸如“具有给定用户(sid)访问权限的什么[实体]”之类的查询?其中[entities]可以是任何可用的实体,如项目,组,......

有没有人在NoSQL数据库上运行Spring Security ACL,特别是在App Engine数据存储上?任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可能认为我的答案最初是关闭的,但您的问题超出了Spring Security:您需要更改数据方法。

如果您正在使用" NO SQL"数据存储区,允许您的应用扩展,而不是围绕数据构建应用。

您需要根据您的用例对实体进行建模,而不是将它们紧密地放在为RDBMS构建的框架中。 这是性能恕我直言的权衡。

如果您不愿意为了性能而交换结构,这可能意味着您的应用程序更适合Google Cloud SQL :)

我可能错了:告诉我们更多关于你的用例的信息?那将是如何通过" NoSQL"数据库中。