我有一个应用程序,其中一些war文件都部署在同一个tomcat服务器上。我需要强制仅针对一个war上下文进行客户端身份验证,并且仅针对特定URL。
我在网上已经阅读了很多相关的问题,但我得出的结论并不符合我需要的解决方案:
有没有办法在不定义用户的情况下使用选项2?或者可能是第三种选择?
提前致谢!
答案 0 :(得分:1)
您无法在纯Tomcat中执行此操作。最好的解决方案是在其前面放置一个Apache HTTP,它终止SSL连接,并且您可以在其中将SSL配置为您的内容,直到单个目录的级别。
答案 1 :(得分:1)
如果您想接受来自受信任CA的任何证书,只需将clientAuth="want"
添加到Connector
并编写过滤器以检查是否已发送证书。将该过滤器分配给所需的Web应用程序。在过滤器中,使用以下命令获取证书:
request.getAttribute("javax.servlet.request.X509Certificate");
并检查它是否为CA。
但请记住,来自该CA的任何证书都允许访问。如果这是一个公共CA,任何人都可以购买一个并访问您的应用程序。您应该始终检查DN,在Tomcat中通过定义用户或在过滤器中手动执行此操作。