如何在没有Servlet的情况下在平静的Web服务(Java和Jersey)中获取客户端证书?

问题描述:

我想从客户端证书访问“subjectDN”,即从证书中获取用户数据(通用名称,电子邮件等),但对认证部分不感兴趣。如何在没有Servlet的情况下在平静的Web服务(Java和Jersey)中获取客户端证书?

如果我会用一个servlet,我知道我可以阅读使用的东西在请求头中发送证书就像

(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate"); 

然而,在我的RESTful Web服务我不使用的Servlet - 所以我没有权限访问请求头。宁静的Web服务是使用Jersey框架以Java编写的。我的GlassFish应用程序服务器已针对SSL进行了正确配置。

有关如何在不使用Servlet的情况下实现此目的的想法?任何务实的替代方法?

的球衣,你可以尝试@Context HttpServletRequest请求作为参数传递给资源的方法:

@GET 
public Response getSomeView(@Context HttpServletRequest request){ 
    [here you have access to the request object] 
} 

希望帮助....

+0

太感谢了 - 仅此而已。 – 2010-08-05 10:18:05