我正在开发一个启用了客户端证书安全性的java Web服务。 我不想使用用户ID为每个方法添加参数。由于用户已通过soap标头使用其客户端证书进行身份验证,是否可以从其证书中获取用户数据(通用名称,电子邮件等)?
谢谢!
答案 0 :(得分:3)
这是您从请求中检索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。
答案 1 :(得分:0)
将java.security.cert.Certificate
投放到java.security.cert.X509Certificate
并检查您可用的方法,例如getSubjectDN()