【问题标题】:Add HTTP authentication to embedded Jetty将 HTTP 身份验证添加到嵌入式 Jetty
【发布时间】:2013-11-19 17:45:49
【问题描述】:

我正在从 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);

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

@RolesAllowed({ "admin" })

然后我在我的 Wicket 主页中添加了以下注释:

@AuthorizeInstantiation("admin")

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

我猜我需要在 Jetty 中打开 DIGEST 身份验证。但是,如果没有 web.xml 文件,我该如何以编程方式执行此操作?我还需要做什么?

【问题讨论】:

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


    【解决方案1】:

    另一个answer 到一个类似的question,提供了一个sample webapp 的链接,极大地帮助了我,让我开始工作。

    【讨论】:

    • 不幸的是,该示例强制安全处理程序成为唯一的处理程序 - 例如,当您希望服务器使用 ResourceHandler 来提供文件时,它就无法正常工作。
    • 我还没有选择答案。一定要让我们知道最好的方法!
    【解决方案2】:

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

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

    在我的机器上工作! (tm)

    【讨论】:

      猜你喜欢
      • 2013-04-15
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 2018-05-25
      • 2010-09-09
      • 1970-01-01
      相关资源
      最近更新 更多