WCF 第八章 安全
很難想象在當(dāng)今環(huán)境的商業(yè)應(yīng)用中有比安全還要嚴(yán)重的一個(gè)方面。性能和可用性也是主要關(guān)注的,但對一些偶爾需要安全(事實(shí)上,相比帶來的價(jià)值來說可能更加有害)的應(yīng)用程序是沒有太多價(jià)值的。當(dāng)我們使用在線銀行服務(wù)時(shí),我們相信應(yīng)用服務(wù)提供商已經(jīng)盡他們最大努力來阻止濫用,數(shù)據(jù)崩潰,攻擊以及將我們的財(cái)務(wù)信息暴露給其他人。當(dāng)我們向使用者提供基于WCF的服務(wù)時(shí)也有同樣的要求。
? 這一章主要關(guān)注安全背后的概念和一些使用WCF來讓服務(wù)變得安全(當(dāng)必要時(shí))的實(shí)踐。我們將通過介紹主要概念開始,然后我們進(jìn)入詳細(xì)部分,伴隨著很多例子的介紹。
? 在對概念描述以后,為了與本章節(jié)剩余部分一起工作而提供了必須的背景內(nèi)容,我們開始介紹創(chuàng)建并使用安全服務(wù)證書。那就是說,我們將從傳輸和消息方面描述確保安全的背后細(xì)節(jié)。
? 本章的絕大部分聚焦于安全服務(wù)在常見場景中的實(shí)際應(yīng)用。被分別列入為兩個(gè)開放的組,局域網(wǎng)模型和因特網(wǎng)環(huán)境。
? 最后,我們通過介紹如何使能WCF中允許我們跟蹤和診斷涉及調(diào)用我們服務(wù)操作的調(diào)用者的權(quán)限和認(rèn)證問題的安全審計(jì)特性來結(jié)束本章。
WCF 安全概念
在我們處理實(shí)現(xiàn)安全服務(wù)的代碼,配置文件和進(jìn)程之前,讓我們通過介紹4個(gè)主要的服務(wù)安全信條開始: 認(rèn)證,授權(quán),可信賴和完整性。通過這些定義,我們接下來將描述應(yīng)用到WCF的傳輸安全和消息安全概念。
認(rèn)證
安全最基本概念之一是知道誰在敲門。認(rèn)證是為一次訪問建立一個(gè)清晰身份的過程,例如,通過提供用戶名和密碼的證據(jù)。盡管對一個(gè)服務(wù)來說這對理解它的調(diào)用者明顯是重要的,同等重要的是調(diào)用者有一個(gè)關(guān)于調(diào)用的服務(wù)是期望的而不是偽造的保證。
? WCF為服務(wù)和調(diào)用者為共同認(rèn)證提供幾個(gè)選項(xiàng)-例如,證書和Windows賬戶和組。通過使用這些以及其他選項(xiàng)(我們會(huì)在這章描述),每端都可以保證它們正在與期望的部分通信。
授權(quán)
安全的下一步,就是在身份建立起來后確定是否應(yīng)該允許調(diào)用端做它們請求的。這個(gè)過程稱為授權(quán)因?yàn)榉?wù)或者資源授權(quán)一個(gè)調(diào)用者來操作。注意你也可以選擇匿名用戶來操作,所以盡管授權(quán)與認(rèn)證不是嚴(yán)格獨(dú)立,它通常是跟隨認(rèn)證的。
? 授權(quán)可以通過服務(wù)中的自定義代碼實(shí)現(xiàn),原有的或者自定義授權(quán)提供者,ASP.NET 規(guī)范,Windows組,活動(dòng)目錄,認(rèn)證管理器和其他架構(gòu)。
可信賴性
當(dāng)處理敏感信息時(shí),如果一次調(diào)用的結(jié)果將廣播給任何感興趣的人,那么創(chuàng)建身份并授權(quán)就沒有多大用處。可信賴性是阻止其他人讀取一個(gè)調(diào)用者和一個(gè)服務(wù)間的交換信息的概念。這通常通過加密實(shí)現(xiàn),這種多樣性的架構(gòu)存在WCF中。
完整性
最后一個(gè)關(guān)于安全的基本概念是保證在調(diào)用者和服務(wù)端傳輸?shù)南?nèi)容沒有被篡改,反之亦然。這通常通過數(shù)字簽名或者為消息內(nèi)容創(chuàng)建一個(gè)簽名哈希并讓接收方驗(yàn)證基于它接收的內(nèi)容的簽名值。如果計(jì)算出的值與嵌入的值不匹配,消息應(yīng)該被丟棄。
? 注意即便私密性不是必須的也可以提供完整性。只要接收方可以通過數(shù)字簽名驗(yàn)證保證原始數(shù)據(jù)那么以明文發(fā)送消息也是可以接受的。
傳輸安全和消息安全
WCF中有兩個(gè)主要的安全級別;兩個(gè)都是關(guān)于在一個(gè)服務(wù)端和調(diào)用端(有時(shí)稱作傳輸安全)消息的安全性。第一個(gè)保護(hù)數(shù)據(jù)的概念是當(dāng)它在網(wǎng)絡(luò)中發(fā)送,或者”在線”。這稱之為傳輸安全。另外一個(gè)類別稱作消息安全并關(guān)注每條消息為它自己提供的保護(hù),不考慮使用的傳輸架構(gòu)。
? 為數(shù)據(jù)發(fā)送提供保護(hù)的是傳輸安全,不關(guān)心內(nèi)容。這個(gè)場景的通用例子是使用安全套接層(SSL)來對數(shù)據(jù)包的內(nèi)容進(jìn)行加密和簽名并通過HTTPS發(fā)送。也有其他的傳輸安全選項(xiàng),選項(xiàng)將依賴于使用的特定WCF綁定。事實(shí)上,默認(rèn)情況在WCF中你將看到很多選項(xiàng)設(shè)置為安全,比如TCP。
? 傳輸安全的一個(gè)限制是它依賴于每“步”和有一致安全配置的網(wǎng)絡(luò)路徑上的參與者。或者說,如果一條消息必須在它到達(dá)目的地前中轉(zhuǎn),那么就沒有方式來保證傳輸安全在中轉(zhuǎn)后(除非中轉(zhuǎn)被原始服務(wù)提供商完全控制)也啟用。如果安全不是信賴生成,數(shù)據(jù)可能也會(huì)這樣。額外的,中轉(zhuǎn)本身必須被信任的,不可在繼續(xù)傳輸過程中改變消息。這些要求對通過基于互聯(lián)網(wǎng)的路由的服務(wù)是重要的。
消息安全關(guān)注保證獨(dú)立消息的完整性和私有性,不考慮網(wǎng)絡(luò)。盡管加密和通過公鑰私鑰簽名,消息將會(huì)被保護(hù)即便它通過非安全協(xié)議(比如普通HTTP)發(fā)送。
? 使用傳輸安全和消息安全通常通過配置文件確定;兩個(gè)基本的例子在列表8.1中顯示。
列表8.1 傳輸安全和消息安全例子
<?xml version="1.0" encoding="utf-8" ?> <configuration><system.serviceModel><bindings><basicHttpBinding><binding name="MyBinding"><security mode="Transport"><transport clientCredentialType="Windows"><extendedProtectionPolicy policyEnforcement="Never" /></transport></security></binding></basicHttpBinding><wsHttpBinding><binding name="MyBinding"><security><transport clientCredentialType="None"><extendedProtectionPolicy policyEnforcement="Never" /></transport></security></binding></wsHttpBinding></bindings></system.serviceModel> </configuration>? 隨著你深入了解本章的過程,你講看到使用傳輸安全或者消息安全例子的場景,在一些情況,會(huì)使用混合安全模式。
轉(zhuǎn)載于:https://www.cnblogs.com/danielWise/archive/2011/01/04/1925705.html
總結(jié)
以上是生活随笔為你收集整理的WCF 第八章 安全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于重构之Switch的处理【一】如果是
- 下一篇: 使用CInternetSession和C