Java 如何保护restful Web服务免受未经授权的访问

Java 如何保护restful Web服务免受未经授权的访问,java,web-services,security,rest,jax-rs,Java,Web Services,Security,Rest,Jax Rs,我有一个JAX-RS Restful Web服务。此资源/Web服务是我们的资产。我将向调用此服务资源的第三方客户端公开此服务url。我想保护此服务免受其他授权客户/供应商的攻击 因此,我的问题是- 如何保护这一点 我认为应该包含一个API密钥,并且该API密钥应该与一个Perticular客户端API密钥相匹配。我还需要匹配客户端url地址,即请求来自哪个url 如何做到这一点。如何获取调用我们的rest服务的URL。我正在Tomcat7.0中部署我的rest 谢谢 更新-- @Path(“报

我有一个JAX-RS Restful Web服务。此资源/Web服务是我们的资产。我将向调用此服务资源的第三方客户端公开此服务url。我想保护此服务免受其他授权客户/供应商的攻击

因此,我的问题是-

如何保护这一点

我认为应该包含一个API密钥,并且该API密钥应该与一个Perticular客户端API密钥相匹配。我还需要匹配客户端url地址,即请求来自哪个url

如何做到这一点。如何获取调用我们的rest服务的URL。我正在Tomcat7.0中部署我的rest

谢谢

更新--

@Path(“报告”)
@生成(javax.ws.rs.core.MediaType.APPLICATION\uXML)
公共类DnaReportResource{
@得到
@生成(javax.ws.rs.core.MediaType.APPLICATION\uXML)
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());
//多值Map queryParams=uri.getQueryParameters();
}
}

您可以从servlet处理程序调用

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

编辑

你试过了吗

stringurl=uri.getRequestUri().toString()


它返回什么?

您可以利用配置来实现对客户端的身份验证。

apache配置可能与这类事情有更多的关系。除非您不是在运行apache,而您只是在使用tomcat。@FaddishWorm我使用的是tomcat apache 7.0服务器。在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???嗨..您收到我的问题了吗。
@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();
        }
}