我正在开发一个 Java Web 服务,并启用了客户端证书安全性。 我不想为每个带有用户 ID 的方法添加参数。由于用户已经使用其客户端证书通过soap header 进行身份验证,是否可以从其证书中获取用户数据(公用名、电子邮件等)?
谢谢!
最佳答案
这是您从请求中检索 DN 的方法,
Object certChain = request.getAttribute(
"javax.servlet.request.X509Certificate");
if (certChain != null) {
X509Certificate certs[] = (X509Certificate[])certChain;
X509Certificate cert = certs[0];
String n = cert.getSubjectDN().getName();
}
为此,您必须正确配置 HTTPS 连接器。如果使用 AJP,您必须配置 AJP 连接器,以便将证书从 Apache 传递到 Tomcat。
关于java - 从 Java Web 服务上下文中的客户端证书获取用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3084247/