我目前正在评估身份验证/授权框架。

Apache Shiro看起来非常不错,但是我缺少行级安全性功能。

例如。数据库中可能有特殊的行,只有具有特殊特权的用户才能看到和访问这些行。
为了避免不必要的往返,我们目前修改SQL查询以与我们的授权数据结合,以仅获取当前用户的可见行。

但是这个概念对我来说并不适合,因为我们将业务代码与安全相关的代码混合在一起,它们应该是正交且彼此独立的。

  • 有哪些可行的解决方案?
  • 如何实现行级安全性(尤其是与jpa结合使用)

  • 更新:

    目标数据库主要是Oracle 10g / 11g
    -但是,如果没有大的缺点,则首选数据库独立的解决方案

    最佳答案

    行级安全性实际上最好在数据库本身中完成。当您获取连接时,必须告知数据库您的用户上下文是什么。该用户与一个或多个安全组关联。然后,数据库自动将过滤器附加到用户提供的查询中,以过滤掉安全组中看不到的内容。当然,这意味着这是每个数据库类型的解决方案。

    Oracle具有很好的行级安全性支持,请参见http://www.orafusion.com/art_fgac.htm作为示例。

    07-24 09:49
    查看更多