Security 基于Spring安全组的授权

Security 基于Spring安全组的授权,security,spring,jakarta-ee,spring-security,Security,Spring,Jakarta Ee,Spring Security,我打算制定基于组的许可方案,但我对以下内容感到困惑: 我有一些问题: 什么是最佳方法用户>组>角色>权限或 用户>角色>权限 在这种情况下如何实现安全性(登录/记住我)(需要一个指向好教程的链接) 方法级安全性将使用注释@preautoize hasPermission(#,'')或hasRole或什么 如何根据权限(UI是JSF)在UI中隐藏组件(非管理员的管理) 如果我在视图中隐藏组件,那么方法级安全性的重要性是什么 5) 即使您在GUI中隐藏了一些有趣的内容,恶意用户也可能发送一个伪造的H

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

我有一些问题:

  • 什么是最佳方法
    用户>组>角色>权限
    用户>角色>权限
  • 在这种情况下如何实现安全性(登录/记住我)(需要一个指向好教程的链接)
  • 方法级安全性将使用注释
    @preautoize hasPermission(#,'')
    或hasRole或什么
  • 如何根据权限(UI是JSF)在UI中隐藏组件(非管理员的管理)
  • 如果我在视图中隐藏组件,那么方法级安全性的重要性是什么
  • 5) 即使您在GUI中隐藏了一些有趣的内容,恶意用户也可能发送一个伪造的HTTP请求来调用您的函数

    4) 对于JSP,可能有一些类似于JSF的东西

    3) 取决于角色权限分配的实现

    2) 身份验证和记住我与是否使用组无关

    1) 这取决于你的需要。组使它变得更加困难,所以我会从用户角色权限开始,并在我真正需要时添加组Spring提供了一个开箱即用的解决方案来为用户分配权限。添加角色很容易。但如果你从小组开始,你必须自己实施

    我强烈建议您阅读Spring安全文档。 您可以使用by spring security推荐的方式进行操作:“或者阅读(非常好)的书”“(由框架的一些作者编写)。

    如果你按照教程,你会发现如何做一个简单的登录,并记住我

    要区分角色和权限,您有两种选择

    • Spring3中有一个集成的解决方案(您必须搜索您的解决方案,我不使用它)
    • 您可以实现自己的授权提供程序,通过已分配的角色添加权限

    设计安全模型本身并不是一项简单的任务,如果没有对该领域的详细了解,您试图保护它几乎是不可能的。我已经说过,你在这里得到的任何建议都将与你的问题一样笼统

    1) 在大多数应用程序中,
    User->Roles
    就足够了。在更复杂的应用程序中,可以使用
    用户->角色->权限
    ,但这完全取决于如何定义每个应用程序的范围。通常,您需要细粒度的角色,并将它们分配给用户。我想说,在中间添加另一个级别是<代码>组< /代码>有点太多了。把它想象成一个文件系统——平面文件系统是存在的,并不像看上去那么复杂。在做出决定时要慢慢来,因为这是最重要的决定之一,而且会产生很多不容易预测的影响

    2) 身份验证和记住我的机制已经在SpringSecurity中实现了——您所需要做的就是选择最适合您的实现,并使用安全命名空间支持对其进行配置。若你们还并没有看过示例应用程序,那个么一定要看一看

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

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


    5) 正如拉尔夫所说,如果你隐藏了一些东西,并不意味着它已经不存在了——它仍然可以被一个没有特权的用户调用。

    Spring Security 4-SNAPSHOT

    权限组

    另一种方法是将权限划分为多个组并分配
    向用户分组。

    感谢您的精彩回答,但我确实需要更多关于以下几点的细节3-我假设addUser或deleteUser等方法执行特定操作,因此只需要权限检查,对吗?2-请给我一个实现身份验证的好链接,记住我1-组有什么不好,它比角色有什么优势,这意味着我为什么要使用它?提前谢谢。@Jsword:我不想失礼,但安全是一个你真正需要理解的主题。所以我强烈建议你多读一些关于Spring Security的内容。你说得很对,我需要多读一些,这就是为什么我要一本好的教程,非常感谢。那里有很多教程。在这篇文章中提到了一些。春季安全的新书出版了。曼宁出版社有一个你可以在几分钟内下载并开始练习的工具。使用你最喜欢的搜索引擎——“spring security groups authentication code”将是一个有用的搜索。这是一个非常好的答案,应该比大量的“过度投票”的答案获得更多的支持。