2012-09-19 2 views
2

HttpService 덕분에 서블릿을 개발하여 OSGI 컨테이너에 등록하고 있습니다. 내 목표는 내 OSGI 컨테이너에 등록 된 모든 서블릿을 보호하는 것입니다. 내 보안을 처리하기 위해 자체 Servlet에 HttpContext를 등록하고 자체 handleSecurity 메소드 구현을 등록 할 수있는 것을 보았습니다.OSGI HttpService : 모든 servlet 보호

하지만 번들이 기본 HttpContext (보안이 없음을 의미)로 서블릿을 등록하는 경우를 생각합니다.

제 질문은 OSGI 컨테이너에 배포 된 모든 서블릿의 보안을 강제로 강제하는 방법이 있습니까?

답변

3

HttpService.registerServlet의 동작을 재정의하기 위해 Service hook 기능 (OSGI 4.3)을 사용할 것입니다. 필자는 HttContext 구현을 강제로 사용할 것이다.

이 솔루션을 사용하면 HttpService에 서블릿을 등록하는 모든 번들이 내 HttpContext 구현으로 보호됩니다.

+0

OSGi 4.3을 사용할 경우 유효한 해결책입니다 ... –

3

짧은 대답은 HttpService를 사용하는 경우 No입니다.

OSGi 사양에 따라 아직 사용할 수없는 whiteboard-extender을 사용하면 더 이상 대답 할 수 있지만 felix와 pax-web에서는이를 제공합니다. whiteboard-extender를 사용할 때 HttpContext (속성)에 대한 참조와 함께 서블릿을 등록 할 수 있습니다. 물론이 HttpContext는 "커스터마이징 된"것이어야하지만 일단 등록 만하면 서블릿에서 참조 할 수 있습니다. 아마도이 질문에 가장 가까운 곳일 것입니다.

3

Apache Felix 화이트 보드 익스텐더를 사용하는 경우 서블릿 필터를 등록 할 수 있습니다. 이것은 다양한 전략을 지원하기 쉽기 때문에 보안을 처리하는 훨씬 더 좋은 방법입니다. 필터 및 화이트 보드는 Http 서비스의 다음 업데이트에서 지원 될 예정입니다. https://github.com/osgi/design/tree/master/rfcs/rfc0189

제안 된대로 후크를 사용할 수 있지만하지 마십시오. 후크는 애플리케이션 중심의 측면이 아니라 깊은 미들웨어를위한 것입니다. 그들은 시작/중지 주문 문제를 만들고, 디버깅 도구에 대해 시스템을 더 불투명하게 만듭니다. 즉, 시스템을 훨씬 더 복잡하게 만듭니다. 이러한 목적으로 후크를 사용하기 시작하면 더 많은 유스 케이스가 발견되며 상호 작용을 시작합니다. 매우 핵심 시스템 미들웨어를 제외하고는 멀리 떨어져있어 라.