增強Web服務2.0編程
Microsoft 發行了 Web Service s Enhancements (WSE) 1.0 版,以在支持的產品中啟用 安全 、路由和附件,同時它還支持高級Web 服務。Web Services Enhancements 2.0已從簡單支持基本協議發展到支持核心功能與操作系統的集成,并增強了策略、信任和上下文令牌
Microsoft 發行了
Web Services Enhancements (WSE) 1.0 版,以在支持的產品中啟用
安全、路由和附件,同時它還支持高級
Web 服務。
Web Services Enhancements 2.0已從簡單支持基本協議發展到支持核心功能與操作系統的集成,并增強了策略、信任和上下文令牌功能。
WSE 也是對
.NET Framework 支持的擴展,它用于創建和使用 Web 服務,而 WSE 2.0 采用新的
編程模式。過去,Web 服務支持一直依賴 Internet Information Server (IIS) 作為其 HTTP
服務器主機;現在,WSE 2.0 支持通過 TCP/IP 或在進程內來發送消息。這樣,您可以通過對等、單向、異步等方式將消息從
服務器發送到客戶端。
下面,我們將簡要介紹 WSE 2.0 的幾個主要功能,并假設您已熟悉 WSE 1.0。
Rock Paper Scissors:一種安全的、分布式消息處理示例應用程序 為了展示 WSE 2.0 的各個方面,我想創建一個應用程序以展示一些新安全功能和消息處理功能。具體來說,我喜歡使用 TCP 消息處理支持來顯示對等通信,并使它在
Windows 安全性領域工作。我想到的是一個簡單的分布式版本的舊 Rock Paper Scissors
游戲,現在可以用 WSE 2.0 進行安全分發。
Rock Paper Scissors 是一個兩人兒童游戲,傳統上包括讓每個孩子拍手三次,在第三次拍手時出示石頭、剪刀或布的形狀。根據下表中所示理由決定勝者:
|
石頭 |
布 |
剪刀 |
石頭 |
平局 |
布裹石頭。布方贏! |
石頭砸壞剪刀。石頭方贏! |
布 |
布裹石頭。布方贏! |
平局 |
剪刀剪開布。剪刀方贏! |
剪刀 |
石頭砸壞剪刀。石頭方贏! |
剪刀剪開布。剪刀方贏! |
平局 |
該游戲通常用于確定由誰先選擇參加沙地棒球賽的選手、誰吃最后的冰淇淋,甚至由誰擊打對方的手臂。
我們將 Rock Paper Scissors 搬出沙地,直接應用在具有 WSE 2.0 的安全、協作、團結的企業技術中。該游戲的消息處理結構如下面的圖 1 所示。

圖 1:Rock Paper Scissors 消息處理和安全模型
Rock Paper Scissors 有兩個主要組件:一個是名為 RPSService 的 ASP.NET Web 服務,另一個是由多個用戶運行的對等應用程序。RPSService 的作用是讓用戶注冊玩游戲或尋找對手來玩游戲。對等應用程序先是與 RPSService 通信以找到要與之通信的對方,然后在確定對手后直接與其對方進通信。
對等:對于消息處理,WSE 2.0 從基于傳統 HTTP 請求/響應(即 RPC 環境)轉換為采用可能同時具有對等消息處理、異步消息處理和消息隊列的環境。
Kerberos:整個應用程序是通過使用集成的 Windows Kerberos 支持創建的。使用 WSE 2.0,您可以用一種安全的方式連接
網絡。我們將進行驗證、數字簽名和加密消息以確保具有最高的安全性,且這將完全基于 Windows 用戶帳戶。
便捷管理:不用編寫代碼來控制訪問,我們便可以通過策略配置文件來配置消息的安全性。通過策略文件,可以控制要實現的安全種類、要對消息的哪部分進行數字簽名或加密及其實現方式,還可基于消息時限性控制接受條件。目前,可以控制安全性的相應人員為:您的管理員。
Rock Paper Scissors:該應用程序的重要作用不在于應用程序本身,而是它與本例中不同實體通信時使用安全消息、策略和尋址的方式。您猜不到,我正想象我的老板說:“為了決定職員今年的獎金,我想讓你們每人運行一個小的應用程序 RockPaperScissors.exe...”
與 Windows 安全性集成的 Kerberos 令牌支持 我們要討論的 WSE 2.0 的第一部分是支持 Kerberos 安全令牌。WSE 1.0 支持用戶名令牌和 X.509 安全令牌??梢詫⑦@些令牌添加到安全令牌的消息集合,并用于創建數字簽名或執行加密。對于 WSE 2.0 來說,當在 Windows Server 2003 或帶有 Service Pack 1 的 Windows XP 上運行時,則已添加了 Kerberos 令牌支持。更重要的是,Kerberos 令牌支持能夠與集成的 Windows 安全性一起使用,這樣,不再需要將用戶名映射成 Windows 用戶,也不用另外設置用戶
數據庫,可以基于 Windows 用戶控制對 Web 服務的訪問。
在為 RPSService 添加代碼之前,我要做的第一件事是在自己的項目中添加對 Microsoft.Web.Services 程序庫的引用。如果您的計算機上安裝的是 WSE 1.0,那么添加引用時注意選擇 2.0 版的程序庫很重要。幸運的是,程序集的版本號就列在程序集名稱之后,因此可以輕松地選擇正確的程序集。圖 2 顯示的是選定了 WSE 2.0 程序庫的 Add Reference(添加引用)對話框。請注意,1.0 版本的程序庫就在選定的程序庫之前。

圖 2:將引用添加到 WSE 2.0 程序集
下面的代碼演示如何通過編程的方式將 Kerberos 令牌添加到令牌消息集合。它是一方私下向另一方發送其動作時所使用的代碼。該代碼使用 WSE 2.0 的異步 TCP 消息功能(隨后將詳細說明),但用于添加令牌和加密的代碼類似于 WSE 1.0 中用于其他類型令牌的代碼。
using Microsoft.Web.Services.Security.Kerberos;
a
原文轉自:http://www.anti-gravitydesign.com
- 評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
-