【问题标题】:Using Spring Security with EJB or Spring?将 Spring Security 与 EJB 或 Spring 一起使用?
【发布时间】:2011-01-15 07:55:47
【问题描述】:

我想构建一个基于 Java EE 6 的应用程序,但是 Java EE 的安全机制不足以满足我的需求。 Spring Security 似乎是保护我的应用程序的最佳方式。现在我想知道 Spring Security + EJB 是否是一个很好的组合,或者我是否应该更好地只使用 Spring。

我需要方法拦截、ACL 和可能的 URL 模式访问控制。我看到的主要问题是在 Spring Security 中使用 EJB 拦截。有问题吗?还有哪些方面可能存在问题?

您更喜欢 Spring Security + EJB 还是 Spring Security + Spring(仅)?

正如 skaffman 所说,真正的问题是 Java EE 与 Spring。 JBoss 有一个很好的comparison

【问题讨论】:

    标签: java spring jakarta-ee spring-security ejb


    【解决方案1】:

    我对 EJB 不是很熟悉,但我一直认为它本质上是一种数据访问技术,或一种分发服务的方式。

    Spring 本身和 Spring Security 模块被设计为非常轻量级且不引人注目。如果您正在构建 Web 应用程序并使用 Spring Security 进行登录/安全性,那么它并不关心甚至不知道您使用的是 EJB、JDBC 还是远程技术等。

    【讨论】:

      【解决方案2】:

      Spring Security 不同于 Spring 框架。它们可以很好地协同工作,但 Spring Security 不需要您使用下面的 Spring Framework。

      因此,从非常实际的意义上说,这并不重要,这变成了您更喜欢 EJB3 还是 Spring 的问题,而不管 Spring Security 是什么。

      【讨论】:

        【解决方案3】:

        在花了很多天试图找到一种只使用 springsecurity 来保护 ejb 的方法之后,我采用了一种混合解决方案:JAAS + springsecurity。

        客户端使用 JAAS 对服务器上的 ejb 进行身份验证,我创建了一个自定义 JAAS LoginModule,它将身份验证委托给 springsecurity 代码。

        EJB 执行它们的逻辑使用方法,这些方法使用jsr250 注释(RolesAllowed)进行注释,这部分完全由 Spring Security 处理。

        通过这种方式,我实现了 ejb 和 spring security 之间的明确分离,因此我的业务代码由 springsecurity 保护,可以完全移植到任何其他类型的 ApplicationServer,甚至可以作为独立应用程序运行。

        【讨论】:

          猜你喜欢
          • 2021-09-03
          • 2011-01-23
          • 2014-12-20
          • 2011-04-16
          • 2011-11-30
          • 2020-11-02
          • 2014-12-11
          • 2015-01-25
          • 2012-10-30
          相关资源
          最近更新 更多