首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Web Services 安全效能實測:WS-SecureConversation 在 Axis2、Metro、CXF 三大棧的表現對比

     編輯:Java 相關知識

背景:WS-Security 效能痛點

WS-Security 使用非對稱加密 (簽名/加密) 保護 SOAP 訊息,但每次請求/回應都需執行昂貴的 RSA 運算,導致高併發下 CPU 瓶頸。WS-SecureConversation 引入 安全上下文 (Security Context Token, SCT):客戶端先與 STS (Security Token Service) 以非對稱加密交換金鑰材料,建立共享對稱金鑰;後續訊息交換改用對稱加密 (AES/3DES),大幅降低運算成本。

三大棧 WS-SecureConversation 設定差異

共同策略結構

  • BootstrapPolicy:STS 交換階段,非對稱綁定 (X.509 Token)。
  • SymmetricBinding:應用階段,對稱綁定 (SCT),衍生金鑰。

Axis2 / Rampart

  • 客戶端:RampartConfig 在 Policy 中指定 keystore、callback handler。
  • 服務端:services.xml 需額外載入 rahas (STS) 模組、addressing 模組。
  • STS 設定:sct-issuer-config 參數指定金鑰衍生機制 (keyComputation=3 使用自有金鑰)。
  • 啟用 WS-Addressing:client.engageModule("addressing")。

CXF

  • 設定最簡單:cxf.xml 以 .sct 後綴區分 STS 階段參數 (signature/encryption properties、username、callback handler)。
  • 服務端:web.xml 載入 cxf-extension-addr.xml 啟用 WS-Addressing;cxf-servlet.xml 定義 endpoint 與 SCT 參數。
  • 無需額外 STS 模組設定,開箱即用。

Metro (WSIT)

  • 參數直接內嵌 WSDL Policy:wssc:KeyStore/wssc:TrustStore (客戶端),wsss:KeyStore/wsss:TrustStore (服務端)。
  • STS 設定自動從 BootstrapPolicy 繼承,無額外配置。
  • 整體設定量最少,最貼近標準 Policy 宣告。

效能測試環境

  • 硬體:Athlon X2 5400+、4GB RAM、Mandriva 2009.1 64-bit
  • JVM:Sun/Oracle Java 1.6.0_18 32-bit (大堆記憶體表現優於 64-bit)
  • 容器:Tomcat 6.0.20 (Server Heap 1024MB, Client Heap 512MB)
  • 棧版本:Axis2 1.5.1/Rampart 1.5、Metro 2.0、CXF 2.1.8
  • 測試服務:地震資料查詢 (93,000 筆)
  • 兩組負載:
    ① 1,000 請求、小回應 (816 筆匹配) → 考驗請求處理吞吐
    ② 100 請求、大回應 (176,745 筆匹配) → 考驗資料序列化/傳輸

測試結果關鍵發現

無安全基準

  • Metro 2.0 處理小回應最快 (~25% 勝過 Axis2/CXF);大回應三棧持平。

WS-SecureConversation 三種模式

棧Sign (小回應)Encr (小回應)SignEncr (小回應)Sign (大回應)Encr (大回應)SignEncr (大回應)
Metro最快最快最快≈CXF≈CXF≈CXF
CXF次之次之次之最快 (~15% 勝 Metro)最快最快
Axis2最慢 (~2x Metro)最慢最慢最慢 (~2x CXF)最慢最慢

對稱 vs 非對稱加密效能增益

  • 小回應 + 僅簽名:WS-SecureConversation 對稱加密比 WS-Security 非對稱快 2 倍以上 (三棧一致)。
  • 大回應 + 簽名加密:對稱加密優勢明顯,但隨資料量增大,XML 規範化 (Canonicalization) 成本主導,增益縮小。
  • 原因:簽名必須先 Canonicalization → Hash → 非對稱簽名;加密僅需對稱加密資料本體。對稱加密速度遠快於非對稱,但在大資料量下 Hash/Canonicalization 成為瓶頸,抵銷優勢。

架構選型建議

  1. 持續高頻呼叫 (如金融交易、即時饋送) → **WS-SecureConversation 必選**,效能提升顯著。
  2. 一次性/低頻呼叫** → 不建議啟用,STS 交換額外 RTT 反而增加延遲。
  3. 棧選擇:
     • 效能優先 + 簡單設定 → **CXF** (大回應最佳、設定簡潔)。
     • 標準相容性 + 小訊息高吞吐 → **Metro**。
     • 既有 Axis2 投資 → 需接受效能折扣,或規劃遷移。
  4. 記憶體注意:Axis2 SignEncr 客戶端需 ~800MB Heap,CXF 僅 ~48MB,容器密度差異巨大。

互通性提醒

WS-SecureConversation 互通性較 WS-Security 復雜 (SCT 格式、衍生演算法、WS-Addressing 版本)。跨棧整合前務必執行互通性測試 (WS-I Basic Security Profile)。

結語

WS-SecureConversation 以對稱加密取代重複非對稱運算,為持續性 Web Service 呼叫帶來 2x~10x 效能飛躍。CXF 在大訊息、Metro 在小訊息上各有優勢,Axis2 則在記憶體與 CPU 雙重劣勢。根據呼叫模式與訊息大小選擇棧與安全策略,是高效能 SOA 的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved