引言 Web 服務是一些虛擬軟件組件,可以通過各種協議和格式對它進行訪問和調用。這些組件所處的環境各不相同且是分布式的。因此,需要一個安全通信基礎架構來確保這些組件之間的消息(和內容)的安全性。
Web 服務安全性(Web Services Security ,WS-Security 或 WSS) 十分靈活,可以將它設計成一個基礎平臺,可以在此平臺上構建各種安全模型,包括公鑰基礎架構(PKI)、Kerberos 和安全套接字層(SSL)。非凡是,WS-Security 支持多種安全性令牌、多種信任域、多種簽名格式以及多種加密技術。
這個規范提供了三種主要機制:
安全性令牌傳播 消息完整性 消息機密性。
這些機制本身并不提供完整的安全性解決方案。相反,WS-Security 是一個構件,它可以與其他的 Web 服務擴展及更高層的特定于應用程序的協議一起使用,從而提供各種各樣的安全性模型和加密技術。這些機制可以獨立使用(例如,用于傳遞安全性令牌),也可以非常緊密地集成在一起(例如,簽名和加密消息,以及提供與用于簽名和加密的密鑰相關聯的安全性令牌層次)。
本文假定您具有一定的 Web 服務、J2EE 技術及 WebSphere® application Server V5.0.2 的基本知識。通過閱讀本文,您將會理解如何在現有的基礎架構上使用 WS-Security,同時也將了解一種聲明性的編程模型,即 WebSphere Application Server V5.0.2 提供保護應用程序的通信基礎架構。
WebSphere Application Server V5.0.2 中的 WS-Security WebSphere Application Server V5.0.2 通過一種聲明性模型來使用 WS-Security。這種模型的創建和修改可以通過 WebSphere Studio Application Developer Version 5.1、WebSphere Application Server V5.0.2 中可用的應用服務器工具包(ASTK)或 WebSphere 治理控制臺來完成。為了更深地理解這一技術,我們將在此描述一下手動過程。
可以傳播的安全性令牌是 Username 令牌、基于 X.509 的證書以及輕量級第三方驗證(LTPA);同時還有一個 API 來為用戶定義的令牌提供插件。消息完整性是由基于 PKI 的數字簽名提供的(目前還不支持對稱密鑰簽名),而消息機密性是由 xml 加密法提供的。
圖 1. WebSphere Application Server V5.0.2 中的 WS-Security
樣本帳戶服務 WebSphere Application Server V5.0.2 有一種方便而強大的方式來啟用 WS-Security,從而為應用程序的通信鏈路提供 MLS。它可以讓您獲取現有的任何服務的 Web 服務描述語言(WSDL),并為您提供必要的 WS-Security 擴展和綁定來保護 Web 服務客戶端和服務器之間的消息。
本文假定已經有了一個要應用 WS-Security 必須啟用的 Web 服務。這里使用的示例服務是 AccountService,它是由一個假設的銀行(SomeBank)提供的。