我目前正在评估身份验证/授权框架。
Apache Shiro看起来非常不错,但是我缺少行级安全性功能。
例如。数据库中可能有特殊的行,只有具有特殊特权的用户才能看到和访问这些行。
为了避免不必要的往返,我们目前修改SQL查询以与我们的授权数据结合,以仅获取当前用户的可见行。
但是这个概念对我来说并不适合,因为我们将业务代码与安全相关的代码混合在一起,它们应该是正交且彼此独立的。
更新:
目标数据库主要是Oracle 10g / 11g
-但是,如果没有大的缺点,则首选数据库独立的解决方案
最佳答案
行级安全性实际上最好在数据库本身中完成。当您获取连接时,必须告知数据库您的用户上下文是什么。该用户与一个或多个安全组关联。然后,数据库自动将过滤器附加到用户提供的查询中,以过滤掉安全组中看不到的内容。当然,这意味着这是每个数据库类型的解决方案。
Oracle具有很好的行级安全性支持,请参见http://www.orafusion.com/art_fgac.htm作为示例。