2010-02-10 6 views
4

EJB 인증이 내 요구에 너무 제한적이므로 EJB와 함께 스프링 보안을 사용하려고합니다. 인증을 위해서는 스프링 보안도 사용하고 싶습니다. 문제는 EJB 내에서 스프링 보안 컨텍스트를 사용할 수 있는지 여부입니다. EJB를 사용한 스프링 보안

시나리오 :

  • 사용자가 서블릿과 통신
  • 봄 보안
  • 서블릿을 통해
  • 인증은 EJB와 통신
  • EJB를 다른 EJB를와
  • 보안 검사와 통신 할 수있다 EJB 인터셉터 또는 직접 EJB 메소드

일반적으로 스레드 로컬 객체에 보관되는 보안 컨텍스트는 보안 검사에 사용할 수 있도록 서블릿 및 ejb 계층을 통해 전파됩니까?

답변

0

클러스터에서 작동하거나 EJB가 다른 서버에있는 경우 각 서버 (물론)는 자체 스레드를 실행하므로 전파가 발생하지 않습니다.

모두가 동일한 서버에 있다면 원격 인터페이스 대신 로컬을 사용하지 않는 한 해당 서버가 공급 업체에 종속적이라고 생각할 수 있습니다.

1

원격 호출이없는 경우 Spring 보안 컨텍스트에 액세스 할 수 있지만, 객체의 프록시가 필요한 Spring Security의 선언적 보안 기능을 직접 사용할 수는 없습니다.

서블릿 레이어에서 Spring Bean을 사용할 수있다. (EJB와 동일한 인터페이스를 구현하고 위임하는 것이다.) 그리고 이들에 보안을 적용 할 수있다. 이렇게하면 EJB에서 마이그레이션 할 수 있습니다.

또 다른 대안은 EJB에서 작동해야하는 Spring Security의 AspectJ 지원을 고려하는 것입니다.

+0

스프링 응용 프로그램 클러스터링이란 무엇입니까? – deamon