簡體   English   中英

JBoss 到 Spring Boot 和 Spring Security 升級:X509 身份驗證問題

[英]JBoss to Spring Boot and Spring Security upgrade: X509 Authentication problems

升級自:JBoss EAP 6.4 / Spring Security 4.2.1(XML 配置)

升級到:Spring Boot 2.2.4 / Spring Security 5.2.1 (JavaConfig)

我們有一個受 Spring Security 保護的 REST 端點,它使用 X509 身份驗證和一個測試客戶端。

我在X509AuthenticationFilter.extractClientCertificate處的Spring Security 過濾器鏈中設置X509AuthenticationFilter.extractClientCertificate

X509Certificate[] certs = (X509Certificate[]) request
        .getAttribute("javax.servlet.request.X509Certificate");

轉到 Spring Boot 和 Spring Security 5.2 JavaConfig 后,我不再在請求中看到 X509 證書。

沒有發布源代碼,因為我不希望有人解決我的問題......我只是在尋找一些關於在哪里挖掘或可能探索的路徑的建議。 一些想法...

  1. Spring Boot 中的 Spring Security 是否使用嵌入式 Tomcat 連接器? 如果我有一個用於 HTTPS 的 Tomcat 連接器並且客戶端在 HTTPS 上點擊我們,我是否需要以某種方式告訴用於 HTTPS 的 Tomcat 連接器從請求中提取 X509 證書?
  2. 如何或如何將 X509 證書放入具有javax.servlet.request.X509Certificate屬性的請求中? 我正在針對舊的(正在運行的)JBoss EAP 應用程序進行調試,但始終無法弄清楚它是如何進入請求的,只是當我在 Spring Security 的X509AuthenticationFilter斷點時它就在那里。

如果有人遇到過這個問題......我解決了它,如果它對其他人有幫助,我會很樂意回答問題。

結果證明不是 Spring Security 的問題,而是我們如何配置 Tomcat 連接器的問題。

我們需要:

  1. 使用下面與org.apache.coyote.http11.Http11NioProtocol兼容的方法調用正確設置 Spring Boot Tomcat 安全連接器的信任庫。

  2. 另外(這是必不可少的) - 將ClientAuth設置為“true”。

這很丑陋,我挖掘了Tomcat-embed-core的源代碼,但是有一系列字符串相當於“強制客戶端將證書作為請求的一部分發送”。 這些字符串是:“true”、“yes”、“require”、“required”。 他們都做同樣的事情,所以我們只使用“true”。

    protocol.setTruststoreFile(truststorePath); // local directory path
    protocol.setTruststoreType(truststoreType); // a string of either PKCS12 or JKS
    protocol.setTruststorePass(truststorePass); // whatever password you set on your Keystore
    protocol.setClientAuth("true"); // Makes the client provide cert in Request over HTTPS

Tomcat 連接器沒有很好的文檔記錄。 有一個方法調用:

protocol.setSSLCACertificateFile(trustStorePath);

org.apache.coyote.http11.Http11NioProtocol下什么都不做。

顯然,它旨在與org.apache.coyote.http11.Http11AprProtocol (Apache 便攜式運行時)一起使用。 這對我們來說是一個紅鯡魚,我們調用了那個方法,但實際上並沒有設置我們的信任庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM