【问题标题】:Spring Security with EJBs带有 EJB 的 Spring Security
【发布时间】:2011-01-15 09:38:07
【问题描述】:

由于 EJB 授权对于我的需求来说太有限了,我想将 Spring Security 与 EJB 一起使用。对于身份验证,我也想使用 Spring Security。问题是,我是否可以在 EJB 中使用 Spring Security 上下文。

场景:

  • 用户与 servlet 通信
  • 通过 Spring Security 进行身份验证
  • servlet 与 EJB 通信
  • EJB 可以与其他 EJB 通信
  • 使用 EJB 拦截器或直接在 EJB 方法中进行安全检查

安全上下文(通常保存在线程本地对象中)是否会通过 servlet 和 ejb 层传播,以便我可以将其用于安全检查?

【问题讨论】:

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


    【解决方案1】:

    如果您在集群中运行,或者 EJB 在不同的服务器上运行,那么每个服务器(当然)都将运行它自己的线程,因此不会发生传播。

    如果它们都在同一台服务器上,那么它们可能会,但我认为这取决于供应商,除非您使用本地接口而不是远程接口。

    【讨论】:

      【解决方案2】:

      如果不涉及远程调用,您将能够访问 Spring Security 上下文,但您将无法直接使用 Spring Security 的任何需要代理对象的声明式安全功能。

      您可能会使用 servlet 层中的 Spring bean(实现与 EJB 相同的接口,并委托给它们),并对它们应用安全性。如果您愿意,这也将允许您从 EJB 迁移出去。

      另一种选择是考虑 Spring Security 的 AspectJ 支持,它应该与 EJB 一起使用。

      【讨论】:

      • 什么是集群 Spring 应用程序?
      猜你喜欢
      • 1970-01-01
      • 2012-06-23
      • 2020-06-11
      • 1970-01-01
      • 2016-12-05
      • 2018-01-29
      • 2017-07-22
      • 1970-01-01
      • 2011-03-27
      相关资源
      最近更新 更多