jetty osgi:使用一个securityHandler保护所有servlet

jetty osgi:使用一个securityHandler保护所有servlet,jetty,osgi,security,pax-web,Jetty,Osgi,Security,Pax Web,我将jetty用作paxweb的osgi包。 我希望确保所有通过OSGI HttpService注册的servlet和资源都由一个公共SecurityHandler保护(此外,我希望使用JAASLoginService)。 我还想将所有未经验证的请求重定向到单个登录页面 是否可以配置此场景?如果所有servlet使用相同的HttpContext,则是可能的。 作为具有工作Jaas的运行时容器,我建议使用。 它提供了所需的一切,包括PaxWebasHttpService,包括HttpWhitebo

我将jetty用作paxweb的osgi包。 我希望确保所有通过OSGI HttpService注册的servlet和资源都由一个公共SecurityHandler保护(此外,我希望使用JAASLoginService)。 我还想将所有未经验证的请求重定向到单个登录页面


是否可以配置此场景?

如果所有servlet使用相同的HttpContext,则是可能的。 作为具有工作Jaas的运行时容器,我建议使用。
它提供了所需的一切,包括PaxWebasHttpService,包括HttpWhiteboard扩展器

看看ApacheFelix白板HTTP支持。您只需在注册表中注册过滤器,即可供底层Jetty使用:

筛选器支持的筛选器服务属性:

pattern - Regular expression pattern to register filter with.
contextId - Id of context to register with.
service.ranking - Where in the chain this filter should be placed.
init.* - Filter initialization values.

我自己还没有尝试过,但很快就会…

如何强制所有servlet使用相同的HttpContext?好吧,一种方法可以是在使用pax web的白板扩展程序时使用相同的HttpContext。使用httpservice.registerservletno直接注册servlet并不能避免出现这样的情况,这是一个用户,而不是容器或框架要求,因此,由负责设计应用程序的用户使用一个HttpContext。这将是使用felix而不是pax web的替代方案,因为我们有足够的工具来选择哪一个最适合用户:D。我尝试了pax web(当然);)