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

发布于 2024-09-12 16:45:00 字数 405 浏览 12 评论 0原文

我想从客户端证书访问“subjectDN”,即从证书中获取用户数据(公用名、电子邮件等),但对身份验证部分不感兴趣。

如果我使用 Servlet,我知道我可以使用类似的内容读取请求标头中发送的证书

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

,但是,在我的 Restful Web 服务中,我不使用 Servlet - 所以我无法访问请求标头。 Restful Web 服务是使用 Jersey 框架用 Java 编写的。我的 GlassFish 应用程序服务器已正确配置 SSL。

关于如何在不使用 Servlet 的情况下实现这一目标有什么想法吗?有什么实用的替代方法吗?

I want to access the "subjectDN" from the client-side certificate, i.e., fetch the user data (common name, email, etc) from the certificate, but am not interested in the authentication part.

If I would use a servlet, I understand that I can read the certificate sent in the request header using something like

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

However, in my restful web service I don't use Servlets - so I'm lacking access to the request header. The restful web service is written in Java using the Jersey framework. My GlassFish application server is properly configured for SSL.

Any thoughts on how to achieve this without using a Servlet? Any pragmatic alternative ways?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

多孤肩上扛 2024-09-19 16:45:00

在泽西岛,您可以尝试将 @Context HttpServletRequest 请求作为资源方法的参数:

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

希望有所帮助......

in jersey you can try @Context HttpServletRequest request as a argument to a resource method:

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

hope that helped....

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文