【问题标题】:configure tomcat for client authentication only for specific URL patterns仅为特定 URL 模式配置 Tomcat 以进行客户端身份验证
【发布时间】:2013-02-02 23:22:36
【问题描述】:

我有一个应用程序,其中有几个 war 文件都部署在同一个 tomcat 服务器上。我只需要为一个战争上下文强制客户端身份验证,并且只针对特定的 URL。

我在网上阅读了很多类似的问题,但我得出的结论与我需要的解决方案不符:

  1. 定义 2 个具有不同端口的连接器(一个启用 clientAuth,一个不启用)并使用相关端口访问特定 URL ==> 此解决方案不好,因为如果黑客尝试使用其他端口访问此 URL,他可以成功
  2. 在 web.xml 中定义传输保证(例如Enabling mutual SSL per service in Tomcat)==> 这也不好,因为我不想在某些领域定义用户,我只想让服务器请求客户端证书并验证它是可信且有效的。

有没有办法在不定义用户的情况下使用选项 2?或者也许是第三种选择?

提前致谢!

【问题讨论】:

    标签: authentication tomcat ssl client


    【解决方案1】:

    您不能在纯 Tomcat 中执行此操作。最好的解决方案是在其前面放置一个 Apache HTTP,它会终止 SSL 连接,并且您可以在其中将 SSL 配置为您的心脏内容,直至单个目录的级别。

    【讨论】:

      【解决方案2】:

      如果您想接受来自受信任 CA 的任何证书,只需将 clientAuth="want" 放入 Connector 并编写一个过滤器来检查是否发送了证书。将该过滤器仅分配给所需的 Web 应用程序。在过滤器中,使用以下方式获取证书:

      request.getAttribute("javax.servlet.request.X509Certificate");
      

      并检查它的 CA。

      但请记住,来自该 CA 的任何证书都将允许访问。如果这是一个公共 CA,任何人都可以购买一个并访问您的应用程序。您应该始终检查 DN,在 Tomcat 中您可以通过定义用户或在过滤器中手动执行此操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 2012-05-30
        • 2018-06-15
        • 1970-01-01
        • 2018-09-16
        相关资源
        最近更新 更多