基于Spring安全组的授权

Mah*_*leh 3 security spring spring-security java-ee

我打算制作基于群组的权限计划,但我对以下内容感到困惑:

我有一些问题:

  1. 什么是最好的方法User > Group > Roles > Permissions User > Roles > Permissions
  2. 在这种情况下如何实现安全性(登录/记住我)(需要链接到好的教程).
  3. 方法级安全性将使用注释@PreAutorize hasPermission(#, '')或hasRole还是什么?
  4. 我将如何在UI中隐藏组件(非管理员的管理),具体取决于权限(UI是JSF)?
  5. 如果我隐藏了视图中的组件那么方法级别安全性的重要性呢?

Roa*_*ner 9

设计安全模型本身并不是一项简单的任务,如果没有对域的详细了解,那么您尝试保护它几乎是不可能的.话虽如此,你可以在这里得到的任何建议都是一般的,一般你的问题是.

1)在大多数应用程序中User -> Roles就足够了.在更复杂的User -> Roles -> Permissions情况下可以使用,但这一切都取决于你如何定义每个的范围.通常,细粒度的角色并将其中的一些角色分配给用户正是您所需要的.我会说Groups在中间添加另一个级别有点太多了.想象一下它作为一个文件系统 - 平面文件系统存在并且看起来不那么复杂.在决定这一点时花点时间,因为这是最重要的决定之一,并且会产生许多并不总是容易预测的含义.

2)认证和记忆机制已在Spring Security中实现 - 您需要做的就是选择最适合您的实现并使用安全命名空间支持对其进行配置.如果您还没有,请查看Petclinic示例应用程序和本教程.

3)如果您决定使用权限,则应始终检查权限.保持您选择的增益级别.始终如一.总是.

4)根据您使用的视图技术,JSP taglib可能会派上用场(如Ralph所述).JSF没有这样的东西 - 但写一些类似的东西相对简单.

5)正如拉尔夫所说,如果你隐藏某些东西并不意味着它不再存在 - 它仍然可以被非特权用户调用.