gpt4 book ai didi

java - 是否可以从 jax-rs 获取 TLS 客户端身份验证证书信息?

转载 作者:行者123 更新时间:2023-11-30 08:19:04 24 4
gpt4 key购买 nike

我在 OSGi 环境中。我将 jax-rs 类用于 RESTServiceRegistration。我已经将下面的层配置为在 TLS 握手期间需要客户端认证身份验证。现在我想从我的服务中访问它。

这是我如何尝试访问 X509 主题 CommonName 的伪代码。

接口(interface)(用于 REST 网络服务注册):

@GET
@WebMethod
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/tls")
public String soutTLSClientCertInfo(@Context SomeContext context);

这是实现:

@Override
public String soutTLSClientCertInfo(@Context SomeContext context) {
return context.getAttribute("java.etwas....tsl.cn_name");
}

最佳答案

我找到了答案...如果你有这样的东西,HttpServletRequest 会被自动注入(inject)

private HttpServletRequest request;

@Context public void setHttpServletRequest( HttpServletRequest request ) {
this.request = request;
}

以后你可以像这样使用它:

@Override
public String getTlsInfo() {
StringBuilder stringBuilder = new StringBuilder( );
X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
for (X509Certificate cert: certs) {
stringBuilder.append(cert.getSubjectX500Principal().getName());
}
return stringBuilder;
}

您还应注意 javax.servlet 版本...

关于java - 是否可以从 jax-rs 获取 TLS 客户端身份验证证书信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27037292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com