【问题标题】:How to protect restful webservice from unauhtorised access如何保护 RESTful Web 服务免受未经授权的访问
【发布时间】:2013-09-27 07:03:16
【问题描述】:

我有一个 JAX-RS Restful 网络服务。这个资源/网络服务是我们的资产。我将此服务 url 公开给调用此服务资源的第三方客户端。我想保护这项服务免受其他授权客户/供应商的侵害。

所以我的问题是-

如何保护它。

我想包含一个 API 密钥,并且该 API 密钥应该与一个特殊的客户端 API 密钥相匹配。而且我还需要匹配客户端 url 地址意味着请求来自哪个 url。

如何做到这一点。如何获取调用我们的休息服务的 URL。我在 Tomcat 7.0 中部署我的休息。

谢谢

更新--

@Path("report")
@Produces(javax.ws.rs.core.MediaType.APPLICATION_XML)
public class DnaReportResource {

    @GET
    @Produces(javax.ws.rs.core.MediaType.APPLICATION_XML)
    public void getDnaReport(@Context UriInfo uri) {
        System.out.println(uri.getRequestUri());
        System.out.println(uri.getPath());
        System.out.println(uri.getAbsolutePath());
        System.out.println(uri.getBaseUri());

        //MultivaluedMap<String, String> queryParams = uri.getQueryParameters();
        }
}

【问题讨论】:

  • apache 配置可能与这类事情有更多关系。除非你没有运行 apache 而你只是在使用 tomcat。
  • @FaddishWorm 我使用的是 Tomcat Apache 7.0 服务器。

标签: java web-services security rest jax-rs


【解决方案1】:

您可以从您的 servlet 处理程序中调用

String url = request.getRequestURL().toString();

Getting request URL in a servlet

编辑

你试过了吗

String url = uri.getRequestUri().toString();

它返回什么?

【讨论】:

  • 如何在 JAX-RS jersey 中的 restful 服务资源类中实现。以下是示例 - public void getReport(@Context UriInfo uri) { System.out.println(uri.getRequestUri()); System.out.println(uri.getPath()); System.out.println(uri.getAbsolutePath()); System.out.println(uri.getBaseUri()); }
  • 它正在返回整个 uri。我已经这样做了。但是,它正在返回我的本地 uri。假设我正在向您公开此服务 url,并且您正在为您的站点调用我的服务。现在我会得到你的网站域名,即假设 www.faddishworm.com???
  • 嗨..你得到我的问题了吗。
【解决方案2】:

您可以使用Tomcat Realm 配置来实现您的客户端的身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-17
    • 2019-06-05
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多