Java手动客户端证书身份验证

Java手动客户端证书身份验证,java,authentication,tomcat,client,Java,Authentication,Tomcat,Client,作为Java web应用程序的一部分,我希望通过浏览器证书实现客户端身份验证。我已经能够找到有关如何在客户端和服务器上生成和安装证书的信息 在访问方面,我能找到的所有信息似乎都是关于配置对特定路径的访问,例如www.mydomain.com/securearea,并让服务器处理访问 但是,我希望根据用户是否提供有效的客户端证书来实现自定义行为,而不是使用一揽子访问块。本质上,我希望能够创建一个类似hasValidClientCertificate()的方法 不幸的是,我找不到任何关于如何以编程方

作为Java web应用程序的一部分,我希望通过浏览器证书实现客户端身份验证。我已经能够找到有关如何在客户端和服务器上生成和安装证书的信息

在访问方面,我能找到的所有信息似乎都是关于配置对特定路径的访问,例如www.mydomain.com/securearea,并让服务器处理访问

但是,我希望根据用户是否提供有效的客户端证书来实现自定义行为,而不是使用一揽子访问块。本质上,我希望能够创建一个类似hasValidClientCertificate()的方法

不幸的是,我找不到任何关于如何以编程方式检查客户机是否具有有效的Java证书的参考。我在用Tomcat。这不是我擅长的领域,如果有任何提示或建议,我将不胜感激

非常感谢您抽出时间


Paul

您需要执行两个步骤

1) 配置tomcat以执行客户端证书身份验证(在server.xml中):

3) 如果您需要访问用户证书,请访问

X509Certificate userCert = crts [0];

你看到下面的答案了吗?
X509Certificate[] crts = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
if (crts!= null && crts.length > 0) {
    return true;        
}
X509Certificate userCert = crts [0];