将HTTP身份验证添加到嵌入式Jetty

时间:2013-11-19 17:45:49

标签: jetty wicket jax-rs resteasy embedded-jetty

我在Java应用程序中嵌入了Jetty 9.1。我正在以编程方式配置所有内容;我使用web.xml或Spring或其他任何东西。我将Wicket映射到/*,并将RestEASY JAX-RS API映射到/rest/*。这一切都很好。

我想添加HTTP身份验证,所以我添加了以下内容(基于我发现的尽可能多的Jetty文档):

HashLoginService loginService = new HashLoginService();
loginService.setName("My Realm");
loginService.setConfig("src/main/resources/realm.properties");
server.addBean(loginService);

我添加了一个角色为adminrealm.properties的用户。然后我尝试配置我的REST服务,将以下注释放在我的主JAX-RS资源上:

@RolesAllowed({ "admin" })

然后我将以下注释添加到我的主Wicket页面中:

@AuthorizeInstantiation("admin")

这些变化都没有任何区别;我仍然可以使用我的浏览器导航到我的REST API和Wicket页面。

我猜我需要在Jetty中启用DIGEST身份验证。但是如何在没有web.xml文件的情况下以编程方式执行此操作?我还需要做什么?

2 个答案:

答案 0 :(得分:1)

另一个answer到类似的question,提供了一个sample webapp的链接,这对我帮助很大,让我开始运行。

答案 1 :(得分:1)

在Jetty v7中,您将处理程序链接在一起:

server.setHandler(securityHandler);
securityHandler.setHandler(resourceHandler);

在我的机器上运行! (TM)