security - 基于Spring Security组的授权

标签 security spring jakarta-ee spring-security

我打算制定基于组的权限方案,但我对以下内容感到困惑:

我有一些问题:

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

最佳答案

设计安全模型本身并不是一项简单的任务,如果没有对该领域的详细了解,您试图确保它的安全几乎是不可能的。话虽如此,您在这里可以获得的任何建议都将与您的问题一样普遍。

1) 在大多数应用程序中,用户 -> 角色就足够了。在更复杂的情况下,可以使用用户 -> 角色 -> 权限,但这完全取决于您如何定义每个权限的范围。通常,您需要细粒度的角色并将其中的几个角色分配给用户。我想说,在中间添加 Groups 来设置另一个级别有点太多了。将其想象为一个文件系统 - 平面文件系统是存在的,并且不像看起来那样复杂。请花点时间做出决定,因为这是最重要的决定之一,并且会产生许多并不总是容易预测的影响。

2) 身份验证和记住我机制已经在 Spring Security 中实现 - 您所需要做的就是选择最适合您的实现并使用安全命名空间支持对其进行配置。请看一下Petclinic示例应用程序(如果您还没有)。

3) 如果您决定使用权限,则应始终检查权限。保持您选择的增益水平。始终如一。永远。

4) 根据您使用的查看技术,JSP taglib可能会派上用场(正如拉尔夫提到的)。 JSF 没有这样的东西 - 但编写类似的东西相对简单。

5) 正如 Ralph 所说,如果您隐藏某些内容,并不意味着它不再存在 - 非特权用户仍然可以调用它。

关于security - 基于Spring Security组的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712669/

相关文章:

jquery - 在使用 eval 执行动态加载的 JavaScript 文件之前,jQuery 如何清理它们?

java - HTTPS POST 请求(java)到网站(php),如何处理来自它的数据?

hibernate - 没有persistence.xml的Spring 3.1给出 "Unable to resolve persistence unit root URL"

java - Spring 安全 : The authentication stays after server restart

java - Spring 安全: redirect logged user depending on some conditions

java - 延迟初始化异常

security - SSL 徽章未显示

asp.net - 为什么不应该对传递给 Crypto.HashPassword 的密码加盐?

java - EHCache 2.10 中的缓存层次结构

java - 我们可以在Java swing客户端中使用Activemq吗?