我正在Tomcat上部署一个Web应用程序,该应用程序最终应成为提供多种服务的平台。有时,我需要能够使用客户端证书对用户进行身份验证,但仅当她访问某些servlet / url时,才能验证证书并读取一些属性。

我得出的结论是,仅凭Tomcat和jsp / servlet,就不可能仅使一部分Web应用程序请求客户端证书身份验证。要么是整个tomcat服务器每次都在各处请求用户证书(clientAuth为true或want),要么是web.xml授权设置,对于这种情况没有用。

是否可以使用框架,应用服务器或某些经过验证的特定体系结构来实现此需求?我想到也许有一个专用于相互ssl身份验证的单独服务器实例,重定向用户并转发会话参数,但是此选项的管理似乎相当复杂。我敢打赌,这里有类似的解决方案,只是想知道是否有一些参考实现,指导方针等等。谢谢。

最佳答案

您不能仅凭Tomcat做到这一点。客户端身份验证最多是每个Web应用程序,或者您可以在server.xml Connector元素中为整个容器设置身份验证,无论使用什么用途。

如果您需要每个资源使用此资源,则可以通过在前面使用Apache HTTPD并使其终止SSL来获取它。 (它仍将客户端证书中的客户端证书传递给Tomcat,以便Tomcat可以遵循Servlet规范以使其可用于Web应用程序。)然后,您几乎可以将SSL的所有内容配置到单个文件的级别。这还为您提供了其他各种好处,例如负载平衡。

10-07 19:43
查看更多