有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用EJB的java Spring安全性

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

场景:

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

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


共 (2) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

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

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

    另一个选择是考虑Spring Security的AspectJ支持,它应该与EJBs一起工作。