【问题标题】:How should I secure my webapp written using Wicket, Spring, and JPA?我应该如何保护使用 Wicket、Spring 和 JPA 编写的 web 应用程序?
【发布时间】:2010-02-23 00:08:04
【问题描述】:

所以,我有一个使用 Wicket 1.4 框架的基于 Web 的应用程序,它使用 Spring bean、Java Persistence API (JPA) 和 OpenSessionInView 模式。我希望找到一个声明性的安全模型,但不需要大量的 XML 配置——我更喜欢注释。

以下是目前的选项:

  1. Spring Security (guide) - 看起来很完整,但我发现的每个将它与 Wicket 结合的指南仍​​然称它为 Acegi Security,这让我觉得它一定是旧的。

  2. Wicket-Auth-Roles(guide 1guide 2) - 大多数指南建议将其与 Spring Security 混合使用,我喜欢 @Authorize("ROLE1","ROLE2",etc) 的声明式风格.我担心必须扩展 AuthenticatedWebApplication,因为我已经在扩展 org.apache.wicket.protocol.http.WebApplication,而且 Spring 已经在 org.apache.wicket.spring.SpringWebApplicationFactory 后面代理它。

  3. SWARM / WASP (guide) - 这看起来是最新的(虽然主要贡献者几年前去世了),但我讨厌所有声明主体权限的 JAAS 样式的文本文件。我也不喜欢为用户可能想做的每一件事创建一个 Action 类的想法。安全模型对我来说也不是很明显。另外,没有 Authn 示例。

此外,看起来很多人建议混合使用第一个和第二个选项。不过,我根本不知道最佳做法是什么。

【问题讨论】:

    标签: security spring tomcat jpa wicket


    【解决方案1】:

    我不知道你有没有看到这个blog post,所以我在这里添加它作为参考,我只是引用结尾:

    2009/03/12 更新: 对保护 Wicket 感兴趣的人 应用程序还应该意识到 有一个替代方案 Wicket-Security,称为 wicket-auth-角色。 This thread 会给你一个很好的概述 两个框架的状态。 将 wicket-auth-roles 与 Spring Security 已覆盖here
    一个引人注目的特点 wicket-auth-roles 是能够 使用 Java 配置授权 注释。我发现它以某种方式更多 比集中式优雅 配置文件。有一个 例如here

    根据上面的信息和您提供的信息,并且因为我也更喜欢注释,我会选择带有 Spring Security 的 Wicket-Auth-Roles(即guide 2)。扩展AuthenticatedWebApplication 应该不是问题,因为此类扩展WebApplication。并且使用SpringWebApplicationFactory 将您的应用程序对象从spring 上下文中拉出也应该可以正常工作。

    如果您的担忧真的很大,那么通过 IMO 测试来确认这将非常容易和快速:)

    【讨论】:

    • 我还应该补充一点——wicket-auth-roles 似乎无法处理基于角色的权限。例如,如果我有一个对象集合,则用户不能为每个对象指定一个角色。再说一次,SWARM 似乎也没有处理这个问题。鉴于我可能有一些更复杂的用户+对象权限组合,您认为这两种解决方案中的哪一种更好?
    • @Martin 我不确定这些解决方案中的任何一个都可以处理这个问题(看起来很复杂),但这可能超出了我的知识范围。
    【解决方案2】:

    多年来,我们一直在使用 Wicket-security,并将它与 jaas 文件和注释一起使用。定义 jaas 文件非常麻烦,维护它们几乎是不可能的......

    使用注释必须为每个页面定义操作和主体。这很耗时,但它确实允许您让用户动态定义角色和授权。也可以使用 WicketTester 测试所有主体。

    这 3 个包中的每一个都有它的(缺点)优点,这是一个口味问题,它还取决于应用程序的大小。

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 2021-05-17
      • 2017-11-29
      • 2014-05-18
      • 2012-03-29
      • 2014-10-19
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多