使用EJB的Spring安全性

时间:2010-02-10 18:02:00

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

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

情景:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

您可以使用来自servlet层的Spring bean(实现与EJB相同的接口,并委托给它们),并对这些接口应用安全性。如果您希望这样做,这也允许您从EJB迁移。

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