2012-07-02 75 views
0

我對最新的Glassfish服務器(3.1.2)上部署的多模塊應用程序使用標準容器身份驗證。Java EE身份驗證,基本或表單AND證書身份驗證

我曾經有形式認證爲主體的網絡模塊和HTTP含REST Web服務模塊基本身份驗證。

現在,這兩個模塊,我需要能夠執行證書認證,但只作爲一個選項。某些客戶端仍需要能夠通過表單/基本身份驗證進行登錄。

我試圖使用JSR-196以截取由反向代理轉發證書認證數據。這裏的問題是,在Glassfish中,似乎我需要重新實現容器提供的一些幫助,如果我使用JSR-196:在會話,SSO,甚至表單/基本身份驗證中存儲身份驗證...這是Glassfish方式或我的,似乎,但我想要一個混合。所以,我的JSR-196模塊現在需要處理證書,基本和表單身份驗證以及持久性機制。看起來矯枉過正。

我試過一個比較幼稚的方法,即用形式的認證,並有我的反向代理髮送身份驗證數據j_security_check。它適用於第一個模塊,但是太具體實現,看起來像一個黑客。

我還想象在另一模塊做證書認證時,直接在應用服務器(沒有反向代理)上,並重定向到一旦被認證原始模塊,使用SSO膠水。但glassfish上的sso在具有不同auth類型的模塊之間不起作用。

我寧願使用標準的東西,如果可能的話優雅。另外,我希望我的應用程序使用Java EE安全性,而不是某些第三方庫,無論是來自Spring還是其他任何庫。

在Glassfish上實現這個選項有哪些選項?

+0

任何人想分享爲什麼他們給-1? – ymajoros

回答

0

最後,我實現它使用這些組合:

  • 一個JSR-196模塊,可以委託認證,以
  • j_security_check風格的登錄
  • HTTP基本,如果提供
  • 會話級通過其他選項保存
  • 客戶端證書身份驗證,在某些情況下
保持令牌

反向代理不用於ssl。我知道潛在的問題,但我對它很滿意,這是我發現訪問我想要的所有證書數據的最佳方式。其他選項涉及特定於實施的細節,這更多是基於標準的。