2013-02-19 297 views
8

我的應用程序需要對特定URL進行客戶端身份驗證,客戶端身份驗證成功後,應用程序本身也會對客戶端證書主題(使用spring security x509過濾器)進行一些驗證。我想配置tomcat強制客戶端身份驗證(clientAuth = true)爲特定的URL,但基於這篇文章,似乎我不能這樣做只使用tomcat - configure tomcat for client authentication only for specific URL patterns使用clientAuth的tomcat客戶端身份驗證=需要

我的問題是,如果我用clientAuth =希望,將在下面當服務器請求一個證書是如下:

  1. 如果設備有身份證明,但不是在Tomcat的truststoreFile配置的CA信任,則不會傳遞證書,並且該請求在Spring安全篩選器中失敗(證書將爲空)
  2. 如果設備具有由在tomcat truststoreFile中配置的CA信任的身份證書,但是無效(不確定執行了哪些驗證)或過期,或者認證將在tomcat中(在安全過濾器之前)失敗,或者如選項1中那樣,將不傳遞證書d請求將在彈簧安全過濾器中失敗(證書將爲空)

是否存在使用此配置的需要+安全過濾器時可能丟失的安全漏洞?我想問題是 - 如果證書最終從設備傳遞到服務器,服務器將始終驗證它(即使在使用clientAuth =時也是如此),並且不會允許客戶端在證書爲無效?未通過證書的情況由安全篩選器覆蓋,將檢查證書是否爲空。

謝謝!

回答

5

你在1.和2.中的假設都是正確的。 Tomcat不會允許不可信或無效的證書通過您的應用程序。如果您獲得空證書,則可以假定未傳遞證書或傳遞了不可信/無效證書。

在我正在處理的項目上,我們與您具有相同的要求:僅限某些URL的客戶端證書。我們通過實驗發現「clientAuth = want」是如何工作的。

+0

感謝您的回答 – michalv82 2013-12-03 18:15:07

相關問題