官方對于WCF安全性評論
雖然有許多人對WCF 安全性表示懷疑,但在年復一年的不斷發展中,他的安全性也在不斷提高。保障WCF 安全性是完全有可能的,但前提是要深入理解到底什么是WCF 安,及他是怎么運作的。
WCF 安全性到目前為止是 Windows® Communication Foundation (WCF) 最復雜的領域。在服務端的每次 WCF 操作調用中,安全都由服務契約、操作契約、錯誤契約(如果存在)、服務行為、操作行為、宿主配置和方法配置及其代碼等控制。其中的每一項都可以具有十二個或更多個與安全相關的屬性,如圖 1 所示,該圖描述了 ServiceHostBase(ServiceHost 的基礎)的多個安全屬性。
不僅有多得嚇人的詳細信息要掌握,同時在各個部件之間還存在復雜的關系,由此產生了大量可能的排列組合。更加復雜的問題是,并不是所有組合都是允許或受支持的,所有允許的組合亦不全都是合理或有意義的。
毫不奇怪,編程模型非常復雜就強烈意味著在應用程序級別和業務級別容易出現問題。允許跨供應商、信任、平臺和技術邊界進行安全通信這個目標的底層復雜性導致了上述結果。任何延伸都不是一項簡單的任務。但是,與 WCF 的其他方面(如事務、同步和實例化)不同,安全性沒有用于進行配置的屬性或一站式方法。開發人員僅可以控制現成的原始WCF 安全性模型。
有很好的理由不將高級安全編程模型包括在內:任何此類模型都不可能解決所有應用程序和方案,但是遺漏任何應用程序也是不明智的,因為安全在所有方案中都非常重要。
意識到不可能拿出一個為所有應用程序優化的統一的高級安全模型后,我問了自己這樣一個問題:有沒有一種模型對大多數應用程序都足夠適用?雖然可解決所有方案的全面框架不可能實現,但我希望創建一種解決方案,可輕松為絕大多數情況配置安全設置。#t#
在此專欄文章中,我展示了自己的聲明性安全框架。對于服務,我提供了一種安全屬性;對于客戶端,我提供了一些幫助器類和安全代理類。我的聲明性框架使安全配置與 WCF 配置的其他方面相同。我想要一種聲明性模型,該模型可單獨使用并可將了解安全詳情的需要降到最低。作為一名開發人員,您只需要選擇正確的方案,我的框架會讓配置自動進行。
此外,我的框架要求正確的選項并執行最佳實踐。同時,我希望該模型可提供粒度和對底層配置的控制(如果需要此類控制)。
在本文中,我將著重講述目標方案、我的框架如何實現以及如何使用該框架。我也會展示一些說明 WCF 安全性可擴展性的有趣的 WCF 編程技術(您可以從 MSDN® 雜志網站上下載該安全框架)。