使用clientAuth = want进行tomcat客户端身份验证

时间:2013-02-19 16:12:02

标签: authentication tomcat client

我的应用程序需要对特定URL进行客户端身份验证,在客户端身份验证成功后,应用程序本身也会对客户端证书主题进行一些验证(使用spring security x509过滤器)。我想配置tomcat来强制特定URL的客户端身份验证(clientAuth = true),但基于这篇文章,似乎我不能仅使用tomcat - configure tomcat for client authentication only for specific URL patterns来执行此操作。

我的问题是,如果我使用clientAuth = want,当服务器请求证书时,以下内容如下:

  1. 如果设备具有身份证书但不受tomcat truststoreFile中配置的CA信任,则不会传递证书,并且请求将在spring安全过滤器中失败(证书将为null)
  2. 如果设备具有由tomcat truststoreFile中配置的CA信任的身份证书,但无效(不确定执行了哪些验证)或已过期,则身份验证将在tomcat(安全筛选器之前)或选项1中失败没有证书将被传递,并且请求将在spring安全过滤器中失败(证书将为null)
  3. 使用此配置的want +安全过滤器是否可能缺少安全漏洞?我想问题是 - 如果证书最终从设备传递到服务器,服务器将始终验证它(未过期,受信任等),即使使用clientAuth = want也不会允许客户端继续,如果证书是无效?没有证书通过的情况由安全过滤器覆盖,该过滤器将检查证书不为空..

    谢谢!

1 个答案:

答案 0 :(得分:6)

您在1和2中的假设都是正确的。 Tomcat不允许将不受信任或无效的证书通过您的应用程序。如果您获得空证书,则可以假定没有通过证书,或者传递了不受信任/无效的证书。

在我正在处理的项目上,我们有与您相同的要求:仅限某些URL的客户端证书。我们通过实验发现了“clientAuth = want”的工作原理。