無線 Web 服務中的 java 技術 基于 Java 的 Web 服務和無線 Java 開發是 JavaOne 2002 的兩個最突出的主題。它們代表普及計算領域中未來的后端和前端 Java 技術。
Web 服務是基于標準 xml 通信協議的松耦合的可互操作的軟件組件。Web 服務的使用使供給商能夠在其核心競爭力所在的特定市場中提供服務。然后,客戶可以根據其不同需要,從多個供給商選擇采購服務。這種便利意味著 Web 服務完全適合于為無線前端提供服務。無線信息設備的便利和動態本質答應移動用戶利用模塊化的且動態可重新配置的后端服務。
Java 平臺可以在無線 Web 服務應用程序開發中扮演幾個重要角色。在無線端,Java 2 Micro Edition(J2ME)為所有無線設備(從蜂窩電話到復雜的家用無線信息家電)提供了跨設備的兼容性、高級語言功能和大量庫。J2ME 的一個要害組件是移動信息設備框架(Mobile Information Device PRofile(MIDP)),它在蜂窩電話和低端 PDA 上定義 Java API 和運行時環境。由于龐大數量的低端設備,期望在將來能夠廣泛部署 MIDP。
從 Web 服務端,Java 2 企業版(J2EE)已經具有所有必需的 API 和庫來處理 Web 服務 XML 消息。通過 Web 服務接口或網關,可以方便地將用 EJB 技術實現的核心 J2EE 功能、JDBC API 和 RMI API 用于外部世界。為了將這些特性集合起來并啟用無線 Web 服務應用程序,還提出了 J2ME Web 服務規范,目前它在 Java Community Process(JSR 172)中。
無線 Web 服務中的安全性 雖然基于 Java 的無線 Web 服務在普及移動商業世界中有一個光明的前途,但當前技術仍不成熟。安全性仍是剩下待解決的問題之一。無線通信是無線電波攔截輕易獲取的目標,而無線設備幾乎沒有任何計算能力來支持所有通信數據的強加密。此外,在后端,Web 服務運行在企業防火墻之外并使用開放消息傳遞協議來彼此交互。無線 Web 服務同樣是易招受各種破解攻擊的目標。已開發得很好的點對點安全性技術(如 SSL/TLS 和 HTTPS)不適合于多供給商、多中間 Web 服務網絡拓撲圖 ? 重點必需集中在保護內容本身而不是傳遞內容的連接上。盡管面臨新挑戰,然而 Web 服務本身還是能用來增強移動商業安全性。新興的 Web 服務安全性規范的出現使您能夠將 Web 服務用作安全性實用程序。
在下面的段落中,我將討論一種常用的安全性技術:數字簽名。我將向您演示如何在 XML 消息中使用數字簽名來保證端對端的數據完整性。我將應用一些示例來說明如何通過在無線端上使用流行的 J2ME/MIDP 平臺并在后端上使用 JavaServer Pages(jsp)技術來實現 XML 數字簽名。最后,我將討論性能問題以及在當前 MIDP 設備上使用數字簽名的可行性。MIDP 編程細節不在本文范圍內;假如您需要復習一下,請參閱參考資料一節。
定義的 XML 數字簽名 正如我早先提到的那樣,XML 正成為 Web 服務世界中一個主要的數據交換協議。驅動 Web 服務的 XML 消息在到達目的地之前,通常需要經過多個中間環節。因此,我們保護從端到端的通信內容是重要的。完成這一任務的最好方法是,將 XML 文檔及其安全性信息(如簽名、摘要和密鑰等等)都裝運在一起,作為單個文檔。
XML 數字簽名是將數字簽名添加到 XML 文檔的 W3C 規范。發送方可以選擇對整個文檔或者僅它的一部分進行數字簽名。數字簽名、摘要和公鑰被格式化成 XML 元素。那些安全性信息的額外元素可以封裝整個原始 XML 消息,或者可以將它們嵌入原始消息。為了方便起見,我將在本文中使用封裝格式。
為了清楚起見,我在本文中使用的 XML 數字簽名示例并不完全與 W3C 相符。例如,我省去了標準(XML 標記的標準化)部分,因為它僅確保 XML 文檔的一致性而與安全性本身無關。另外,我將密鑰分成幾個參數并將那些參數傳遞到公鑰元素 KeyInfo 下的單獨 XML 元素中,以代替使用編碼的公鑰證書。這在密鑰和處理它們的 Java 代碼之間建立了更明顯的連接。
處理 MIDP 應用程序中的 XML 數字簽名 IBM alphaWorks 開發了一種稱為 XML Security Suite 的 Java 包,它支持最新的 XML 數字簽名規范。JSR 105 是標準化一組 Java API 以處理 XML 數字簽名的一項社區成果。然而,它們僅作用于 Java 2 標準版(J2SE),這意味著可以在服務器端上使用 XML Security Suite 或 JSR 105 Java XML 數字簽名 API,但不能在 MIDP 無線設備端上使用它們。
要處理 XML 數字簽名,正在使用的無線設備需要支持下列功能:
對 XML 文檔讀寫數據。在示例 MIDP 應用程序中,kXML 解析器將 XML 文檔和元素解析成 Java 對象(請參閱參考資料)。除了 kXML 外,還有幾個可在不同許可證條款下使用的其它 MIDP XML 解析器。
簽署消息并驗證簽名。這些功能需要一個不屬于當前 MIDP 1.0 規范的密碼術 API。
在下一節中,我將討論一種輕量級 Java 密碼術包,您可以在服務器端和無線 MIDP 設備端上使用它來生成并驗證 XML 數字簽名。
安全移動代碼中的數字簽名 數字簽名不僅有助于保護應用程序數據通信,它們還有助于保護應用程序本身。無線設備經常需要從無線網絡下載應用程序來動態調整自身,以使其適合新環境和任務。懷有敵意的各方可能攔截移動代碼分發版并將病毒和其它有害的特洛伊代碼段插入下載的應用程序中。我們怎么樣才能確保移動代碼可信呢?移動代碼供給商可以用其數字證書對整個 JAR 壓縮文檔進行數字簽名。無線用戶可以根據供給商的可信級別來確定該應用程序的安全性域。