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