使用EJB的java Spring安全性
由于EJB授权对我的需求来说太有限,我想将Spring安全性与EJB一起使用。对于身份验证,我也想使用Spring Security。问题是,我是否可以在EJB中使用Spring安全上下文
场景:
- 用户与servlet通信
- 通过Spring Security进行身份验证
- servlet与EJB通信
- EJB可以与其他EJB通信
- 直接在EJB方法中使用EJB拦截器进行安全检查
通常保存在线程本地对象中的安全上下文是否会通过servlet和ejb层传播,以便我可以使用它进行安全检查
# 1 楼答案
如果您在集群中运行,或者EJB在不同的服务器上运行,那么每个服务器(当然)都将运行自己的线程,这样就不会发生传播
如果它们都在同一台服务器上,那么它们可能会,但我认为这取决于供应商,除非您使用的是本地接口而不是远程接口
# 2 楼答案
如果不涉及远程调用,您将能够访问Spring Security上下文,但您将无法直接使用Spring Security的任何声明性安全功能,这些功能需要代理对象
您可能会从servlet层使用Springbean(实现与EJB相同的接口,并将其委派给它们),并对这些接口应用安全性。如果您愿意,这还允许您从EJB迁移出去
另一个选择是考虑Spring Security的AspectJ支持,它应该与EJBs一起工作。