




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向服務(wù)的計(jì)算和web數(shù)據(jù)管理第6章面向服務(wù)軟件的可信性面向服務(wù)的軟件是分布式的并且通過(guò)網(wǎng)絡(luò)傳送數(shù)據(jù)。和傳統(tǒng)軟件相比,可信性,包括外部安全性、可獲得性以及可靠性對(duì)這類軟件提出了巨大挑戰(zhàn)。本章簡(jiǎn)要介紹了面向服務(wù)的軟件的可信性,重點(diǎn)討論了外部安全性問(wèn)題。
6.1.1可信性
系統(tǒng)的可信性是由JeanClaudeLaprie在1985年提出的,它指的是系統(tǒng)為終端用戶提供特定服務(wù)的能力,根據(jù)這種能力用戶可以放心的信任系統(tǒng)提供的服務(wù)??尚判园ㄏ到y(tǒng)三個(gè)方面的特征:屬性、方式以及缺陷。每一方面都包含幾個(gè)元素,如圖6.1所示??尚艑傩灾械耐獠堪踩?security)包括內(nèi)部安全性(safety)、易受攻擊性、保密性以及數(shù)據(jù)完整性。6.1基本概念
圖6.1可信性定義可靠性:是在一段時(shí)間內(nèi)服務(wù)的可持續(xù)性。更精確地,系統(tǒng)的可靠性就是一個(gè)函數(shù)R(t),它是在時(shí)間段[0,t],系統(tǒng)成功運(yùn)行的概率。可靠性相關(guān)的另一個(gè)函數(shù)F(t)是一個(gè)失效概率函數(shù),它指的是在時(shí)間段[0,t],系統(tǒng)第一次失效的概率,這里R(t)=1-F(t)。對(duì)于一個(gè)非冗余的計(jì)算機(jī)系統(tǒng),可靠性函數(shù)經(jīng)常用一個(gè)指數(shù)函數(shù)R(t)=e-λt,這里λ指系統(tǒng)的故障率??删S護(hù)性:是對(duì)系統(tǒng)是否容易維護(hù)或失效后返回正常操作的能力的度量??删S護(hù)性經(jīng)常用系統(tǒng)的修復(fù)率μ表示。
可獲得性:是對(duì)系統(tǒng)在給定時(shí)間點(diǎn)t是否可用的度量。系統(tǒng)的可獲得性函數(shù)A(t)是系統(tǒng)在時(shí)間點(diǎn)t正常工作的概率。對(duì)于一個(gè)非冗余的計(jì)算機(jī)系統(tǒng),系統(tǒng)的可獲得性可用下式計(jì)算:
易受攻擊性:是指系統(tǒng)的問(wèn)題或弱點(diǎn),例如程序錯(cuò)誤或一個(gè)通用的錯(cuò)誤配置,會(huì)使系統(tǒng)受到攻擊或使系統(tǒng)崩潰。
保密性:是指信息只能被授權(quán)的用戶訪問(wèn)。
數(shù)據(jù)完整性或信息完整性:是指數(shù)據(jù)或信息的有效性和一致性。
內(nèi)部安全性(safety):是指在運(yùn)行環(huán)境中災(zāi)難性的后果不會(huì)出現(xiàn),例如生命危險(xiǎn)或重大經(jīng)濟(jì)損失。
外部安全性(security):包括易受攻擊性、保密性、完整性以及安全性,主要處理惡意攻擊,而可靠性和可獲得性主要處理由不完善的開(kāi)發(fā)和操作環(huán)境引起的缺陷、錯(cuò)誤、以及系統(tǒng)失效。另外一個(gè)相關(guān)的概念是ISO8402[1986]定義的服務(wù)質(zhì)量。根據(jù)ISO8402[1986],質(zhì)量被定義為“為滿足規(guī)定的和隱含的需求,產(chǎn)品或服務(wù)應(yīng)具有特征或特性的集合”。這是一個(gè)高級(jí)或通用性的定義,不同的領(lǐng)域?qū)Ψ?wù)的質(zhì)量有不同的解釋。例如:
(1)網(wǎng)絡(luò)質(zhì)量:指的是能夠被度量和提高,并且在某種程度上能提前保證的傳輸率、錯(cuò)誤率以及其他特征。
(2)軟件質(zhì)量:軟件和質(zhì)量標(biāo)準(zhǔn)相符合的程度。質(zhì)量標(biāo)準(zhǔn)包括:經(jīng)濟(jì)性、正確性、適應(yīng)性、完整性、可靠性
可用性、文檔化,可修改性、清晰性
可理解性、有效性、可維護(hù)性、靈活性
通用性、可移植性、互操作性、可測(cè)試性
有效性、模塊化、可重用性6.1.2服務(wù)的可信屬性和質(zhì)量
可信屬性和服務(wù)質(zhì)量經(jīng)常被交換使用,站在用戶角度,更多的使用服務(wù)質(zhì)量,而系統(tǒng)設(shè)計(jì)者更多的使用可信屬性。因?yàn)榭尚判园藭?huì)影響可信屬性的缺陷的概念,以及提高可信屬性的方式。圖6.2表示了支持功能性開(kāi)發(fā)的技術(shù)標(biāo)準(zhǔn)以及工業(yè)界和標(biāo)準(zhǔn)組織給面向服務(wù)的軟件開(kāi)發(fā)定義的與可信性相關(guān)的標(biāo)準(zhǔn)。
圖6.2面向服務(wù)軟件開(kāi)發(fā)的可信屬性可信性不是一個(gè)可以添加到已存在的系統(tǒng)中的特征,可信性必須內(nèi)在地和功能結(jié)合在一起,在設(shè)計(jì)的早期階段就作為一項(xiàng)基本需求考慮進(jìn)去。和中心化的軟件相比較,分布式面向服務(wù)的軟件開(kāi)發(fā)需要更強(qiáng)更廣泛的外部安全性。參與的各方必須能夠互相識(shí)別并且限制對(duì)方的作為,各部分之間的通信應(yīng)該被保護(hù),防止各種惡意攻擊。6.1.3SOA軟件的安全問(wèn)題
惡意軟件(malware),是指沒(méi)有經(jīng)過(guò)主人同意就入侵或破壞計(jì)算機(jī)系統(tǒng)的軟件。有許多種有敵意的、入侵的、匿名的惡意軟件。因特網(wǎng)上的許多攻擊都嵌入在惡意軟件中。根據(jù)VirusBulletin的最新報(bào)告(/),惡意代碼事故的數(shù)量持續(xù)增長(zhǎng)。根據(jù)Symantec的報(bào)告(/enterprise/threatreport/),2006年第三季度,SQLslammer蠕蟲病毒是最常見(jiàn)的攻擊,有45%的攻擊來(lái)自于SQLslammer蠕蟲病毒。通常,信息外部安全性處理完整性、保密性、內(nèi)部安全性以及可獲得性(服務(wù)崩潰)。有些攻擊會(huì)損害信息的完整性,有些會(huì)暴露保密性信息,另外一些攻擊會(huì)影響系統(tǒng)的可獲得性。例如,拒絕服務(wù)攻擊會(huì)降低系統(tǒng)可獲得性。但惡意代碼攻擊會(huì)引起綜合后果。一個(gè)人可用特定類型的惡意軟件(例如,特洛伊木馬)損害系統(tǒng),破壞文件系統(tǒng)(完整性方面),同時(shí)竊取用戶帳號(hào)信息,并從中獲取口令(保密性方面)。數(shù)據(jù)庫(kù)的slammer蠕蟲病毒通常采用植入SQL查詢命令實(shí)現(xiàn),它能竊取信息,并且使數(shù)據(jù)庫(kù)立即癱瘓。Rootkit主要用于系統(tǒng)管理或者保護(hù)得到許可的系統(tǒng),但它也威脅著有價(jià)值的信息的保密性。黑客使用Rootkit隱藏或保護(hù)惡意代碼。索尼公司BMG娛樂(lè)部門臭名昭著的Rootkit軟件原本目的是抵制非法復(fù)制CD,在Windows專家發(fā)現(xiàn)了包含在一些索尼標(biāo)題中的復(fù)制控制軟件后,索尼被迫召回?cái)?shù)百萬(wàn)張CD,原因是該軟件使用了有爭(zhēng)議性的Rootkit偽裝技術(shù),可在計(jì)算機(jī)中隱藏自己。在黑客開(kāi)始分發(fā)利用了索尼的偽裝技術(shù)的惡意軟件后,索尼采取了召回的辦法。根據(jù)Symantec的早期報(bào)道,Klez.A和KamaSutra蠕蟲病毒會(huì)破壞抵抗力差的系統(tǒng)的文件。Klez.A采用ElKern病毒感染系統(tǒng),執(zhí)行大規(guī)模的郵件分發(fā),并且把文件的大小改為0字節(jié)。KamaSutra蠕蟲病毒會(huì)刪除文件。很明顯,這兩種蠕蟲病毒都進(jìn)行了文件完整性破壞。
通常,術(shù)語(yǔ)蠕蟲和病毒都指這些惡意代碼。這里,蠕蟲、病毒以及惡意代碼可以互換使用。
但是,并非所有的蠕蟲都有負(fù)面作用,predator蠕蟲,也叫做counter蠕蟲或killer蠕蟲,用于抵制惡意代碼。這一良好動(dòng)機(jī)的代碼也是蠕蟲,它通過(guò)另一個(gè)蠕蟲的后門繁殖。為了抗擊攻擊,可以主動(dòng)運(yùn)行這類蠕蟲。蠕蟲通過(guò)蠕蟲攜帶的各種機(jī)制傳播。有些蠕蟲在完成初始配置后,能夠復(fù)制自身并通過(guò)易受攻擊的節(jié)點(diǎn)自動(dòng)傳播。但是,有些類型的惡意軟件不能自我復(fù)制。有些蠕蟲,作為惡意軟件的子集,能夠自我復(fù)制惡意代碼,而有些是惡意的但不能自我復(fù)制。蠕蟲,從某種意義上講,的確是能自我復(fù)制并自我繁殖的惡意軟件,這些惡意軟件通過(guò)相互連接的易受攻擊系統(tǒng)自動(dòng)傳播。
惡意軟件的另一子集,一般稱為病毒,它們類似于蠕蟲,也能夠自我繁殖。因?yàn)椴《竞腿湎x的移動(dòng)性(能夠自發(fā)移動(dòng)),它們會(huì)引起大量事故。病毒和蠕蟲并沒(méi)有特定目標(biāo),它們隨機(jī)地掃描目標(biāo),甚至和受損害的節(jié)點(diǎn)合作。表6.1列出了惡意軟件的攻擊。表6.1惡意軟件的一般攻擊鑒定和授權(quán)是用來(lái)確?;景踩耐ㄓ眉夹g(shù)。鑒定要求一個(gè)實(shí)體(一個(gè)人或計(jì)算機(jī))必須給出身份證據(jù),用來(lái)驗(yàn)證:“你是否就是你?”。
授權(quán)確認(rèn)一個(gè)實(shí)體在通過(guò)鑒定后能夠訪問(wèn)資源,它回答了這樣的問(wèn)題:“在確認(rèn)你就是你之后,允許你做什么?”。
加密是用來(lái)阻止偷聽(tīng)會(huì)話的主要技術(shù)。有兩種主要的加密技術(shù):密鑰系統(tǒng)和公鑰系統(tǒng)。
密鑰系統(tǒng):在這種安全系統(tǒng)中,一個(gè)密鑰被用來(lái)加密數(shù)據(jù)或信息。例如,加密方法是對(duì)每一個(gè)字符增加一個(gè)整數(shù)。密鑰系統(tǒng)的問(wèn)題是如何安全的把碼傳給接收者。公鑰系統(tǒng):在這種安全系統(tǒng)中,發(fā)送者或接收者創(chuàng)建兩個(gè)碼,一個(gè)碼是公共的(公有的),而另一個(gè)是保密的(私有的)。公鑰系統(tǒng)用于兩個(gè)目標(biāo):加密和數(shù)字簽名。在公鑰加密系統(tǒng)中,任何想發(fā)送加密文檔給接收者的人,使用公有碼加密文檔。只有掌握私有碼的接收者才能解密文檔??紤]類似的情況,一個(gè)銀行想讓它的客戶發(fā)送加密文檔到銀行,客戶不用考慮它的安全性。銀行委托郵局分發(fā)無(wú)鎖的安全箱,只有銀行有碼打開(kāi)這種箱子。任何人可購(gòu)買安全箱,把加密文檔放在箱里,鎖住箱子,并把箱子寄給銀行。另外一個(gè)公鑰系統(tǒng)是數(shù)字簽名,在這個(gè)系統(tǒng)中,加密是私有的,而解密的碼是公有的。除了發(fā)送者,沒(méi)有人能夠創(chuàng)建加密的文檔,但任何人都可解密文檔。
6.2.1IIS和基于Windows的安全機(jī)制
大多數(shù)Web站點(diǎn)需要提供公有部分,受保護(hù)的部分以及受限制的部分。有些部分允許所有人訪問(wèn),有些部分只允許員工訪問(wèn),而有些部分只允許管理者訪問(wèn)。例如,當(dāng)一個(gè)Web站點(diǎn)在數(shù)據(jù)庫(kù)中存儲(chǔ)它的客戶的信用卡信息,則對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)必須受到限制。ASP.Net的安全特性幫助你解決這一問(wèn)題以及其他安全問(wèn)題。6.2Web應(yīng)用的安全設(shè)計(jì)部署在IIS和Windows上的ASP.NetWeb應(yīng)用和服務(wù)的安全性由IIS的安全性和Windows的安全系統(tǒng)管理,如圖6.3所示。運(yùn)行在IIS根目錄,或運(yùn)行在IIS目錄創(chuàng)建的虛擬目錄上的任何Web服務(wù)都由IIS安全機(jī)制管理。對(duì)Web應(yīng)用和Web服務(wù)的所有訪問(wèn)都必須通過(guò)IIS,它分配給每個(gè)請(qǐng)求一個(gè)訪問(wèn)標(biāo)記。訪問(wèn)標(biāo)記使Windows操作系統(tǒng)執(zhí)行訪問(wèn)控制表ACL(AccessControlList)以檢查被請(qǐng)求的資源。每個(gè)文件有一個(gè)訪問(wèn)組(匿名的或需要憑證的)。IIS也支持IP地址及域名限制,通過(guò)請(qǐng)求者的IP地址或域名來(lái)決定響應(yīng)或拒絕請(qǐng)求。IIS通過(guò)協(xié)議的安全套接層SSL(SecureSocketsLayer)系列產(chǎn)品支持加密的HTTP連接。SSL不保護(hù)服務(wù)器上的資源。相反的,它禁止竊聽(tīng)Web服務(wù)和遠(yuǎn)程客戶間的會(huì)話。
圖6.3IIS和基于Windows的ASP.Net結(jié)構(gòu)IIS支持訪問(wèn)控制的多個(gè)層次,可在Windows計(jì)算機(jī)的控制面板的管理工具中選擇層次。
(1)匿名:無(wú)訪問(wèn)控制。
(2)簡(jiǎn)單鑒定:由IIS管理,用用戶名和口令鑒定用戶??诹钣貌患用艿奈谋景l(fā)送。
(3)深度鑒定:類似于簡(jiǎn)單鑒定,除了口令以加密的文本形式發(fā)送。
(4)在NTLM或Kerberos安全方法中集成的Windows鑒定:它用Windows注冊(cè)憑證鑒定用戶。為了訪問(wèn)IIS中的服務(wù),服務(wù)請(qǐng)求者必須創(chuàng)建一個(gè)Windows賬號(hào)。(5)表格鑒定:開(kāi)發(fā)者可在IIS之外設(shè)計(jì)他們自己的安全機(jī)制。如果部署了表格鑒定,所有未鑒定的請(qǐng)求通過(guò)HTTP客戶端的再定向被定向到一個(gè)HTML表格??蛻籼峁{證并提交表格。
(6)護(hù)照鑒定:由微軟提供的中心化的鑒定服務(wù)。該服務(wù)為成員節(jié)點(diǎn)提供單次登陸和主要摘要(profile)服務(wù)。6.2.2基于表單的安全
基于表單的安全用Web.config文件定義安全策略。Web.config文件中的第二個(gè)元素<system.Web>用來(lái)定義許多功能,包括對(duì)Web應(yīng)用程序的鑒定和授權(quán)。表6.2列出了Web.config文件中的元素<system.Web>的部分子元素。下面的代碼模板展示了表6.2中部分元素的應(yīng)用。
<authenticationmode="[Windows|Forms|Passport|None]">
</authentication>
<identityimpersonate="[true|false]"
userName="[domain/user_name]"password="[user_password]"/>
</system.Web>
<system.Web>
<authorization>
<allowusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
<denyusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
</authorization>
</system.Web>
<system.Web><trustlevel="[Full|High|Medium|Low|Minimal]"originUrl=""/>
<securityPolicy>
<trustLevelname="Full"policyFile="internal"/>
<trustLevelname="High"policyFile="Web_hightrust.config"/>
<trustLevelname="Medium"policyFile="Web_mediumtrust.config"/>
<trustLevelname="Low"policyFile="Web_lowtrust.config"/><trustLevelname="Minimal"policyFile="Web_minimaltrust.config"/>
</securityPolicy>
</system.Web>
例如,下面的設(shè)置允許你用訪問(wèn)Windows時(shí)的注冊(cè)名和口令訪問(wèn)Web應(yīng)用:
<system.Web>
<authenticationmode="Windows"/>
<identityimpersonate="true"/></system.Web>
如果你指定了不同的注冊(cè)名和口令,將根據(jù)提供的用戶名和口令進(jìn)行鑒定。例如:
<identityimpersonate="true"userName="admin"password="admPassWord"/>
這種選擇允許用戶用不同Windows賬號(hào)執(zhí)行不同的操作。表6.2Web.config中<system.Web>的子元素基于Windows的安全性要求Web頁(yè)面的客戶必須在運(yùn)行Web應(yīng)用或Web服務(wù)的服務(wù)器上有一個(gè)Windows賬號(hào)。也可以創(chuàng)建一個(gè)Web應(yīng)用,它有一個(gè)和Windows分離的安全系統(tǒng),這個(gè)應(yīng)用維護(hù)一個(gè)分離的憑證列表(用戶名和口令)。下面的模板顯示了使用基于表格安全的Web.config的格式。
<configuration>
<system.Web>
<authenticationmode="Forms">
<formsname="[name]"loginUrl="[url]"protection="[All|None|Encryption|Validation]"
path="[path]"timeout="[minutes]"
requireSSL="[true|false]"
slidingExpiration="[true|false]">
<credentialspasswordFormat="[Clear|MD5|SHA1]">
<username="[UserName]"password="[password]"/>
</credentials></forms>
</authentication>
</system.Web>
<system.Web>
<authorization>
<allowusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
<denyusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
</authorization></system.Web>
</configuration>
模板的上部分(第一個(gè)system.Web元素)定義了通過(guò)用戶名和口令進(jìn)行鑒定,模板的下部分(第二個(gè)system.Web元素)定義了鑒定通過(guò)的用戶的授權(quán)。
讓我們考慮圖6.4的例子,一個(gè)應(yīng)用組織在三個(gè)目錄下。目錄“home”是根目錄,它有兩個(gè)子目錄,分別是manager和admin,home目錄包含了三個(gè)文件:home.aspx、LoginForm以及Web.config。下面的代碼顯示了如何在home.aspx頁(yè)面添加訪問(wèn)控制。
<html>
<body>
<h1>HomePage</h1>
<hr>
Ifyouhaveamanagecredential,pleaseclickthebuttonbelow:
<formrunat="server"><asp:ButtonText="ForManagersOnly"OnClick="ViewManagerPage"
RunAt="server"/>
</form>
Ifyouhaveadmincredential,pleaseclickthebuttonbelow:
<formrunat="server">
<asp:ButtonText="AdministratorOnly"OnClick="ViewAdminPage"
RunAt="server"/>
</form></body>
</html>
<scriptlanguage="C#"runat="server">
voidViewManagerPage(Objectsender,EventArgse){
Response.Redirect("manager/managerPage.aspx");
}
voidViewAdminPage(Objectsender,EventArgse){
Response.Redirect("admin/adminPage.aspx");
}
</script>
圖6.4鑒定和授權(quán)的文件和目錄的組織示例當(dāng)點(diǎn)擊home.aspx頁(yè)面的按鈕ViewManagerPage時(shí),就會(huì)調(diào)用相應(yīng)的C#函數(shù),該函數(shù)通過(guò)方法:
Response.Redirect("manager/managerPage.aspx");
訪問(wèn)managerPage.aspx。函數(shù)首先檢查目錄下用于鑒定的Web.config文件。home目錄下的Web.config文件包含的鑒定設(shè)置如下:
<configuration>
<system.Web><authenticationmode="Forms">
<formsname="LoginForm"loginUrl="LoginForm.aspx">
<credentialspasswordFormat="Clear">
<username="mmj"password="dragonBall"/>
<username="Jones"password="jjdan"/>
<username="jJane"password="PairsPairs"/><username="Al"password="NeverBreak"/>
<username="Nelson"password="Orbit2Orb"/>
</credentials>
</forms>
</authentication>
</system.Web>
<configuration>當(dāng)訪問(wèn)被Web.config文件保護(hù)的頁(yè)面時(shí),如果沒(méi)有通過(guò)鑒定,訪問(wèn)被重定向到“forms”元素的loginURL屬性給出的頁(yè)面地址。如果通過(guò)鑒定,繼續(xù)訪問(wèn)被保護(hù)的頁(yè)面時(shí),注冊(cè)頁(yè)面不再被激活。圖6.5說(shuō)明了訪問(wèn)的流程,包括鑒定和授權(quán)過(guò)程。
定義授權(quán)的Web.config文件分別放在目錄manager和admin下,例如,假設(shè)下面兩個(gè)Web.config文件分別放在目錄manager和admin下:
<configuration><system.Web>
<authorization>
<denyusers="?"/>
<allowusers="Jones"/>
<allowusers="Nelson"/>
<denyusers="mmj"/>
<allowusers="Al"/>
</authorization>
</system.Web>
</configuration><configuration>
<system.Web>
<authorization>
<denyusers="?"/>
<allowusers="mmj"/>
</authorization>
</system.Web>
</configuration>三個(gè)用戶:Jones,Nelson和Al,授權(quán)訪問(wèn)manager頁(yè)面,而mml被明確拒絕訪問(wèn)managerPage.aspx,只有一個(gè)用戶mmj被授權(quán)訪問(wèn)admin目錄下的adminPage。
Web.config中的訪問(wèn)控制列表通過(guò)兩個(gè)子標(biāo)簽<allow>和<deny>實(shí)現(xiàn)。對(duì)于<allow>元素,?表示允許匿名用戶,*表示允許所有用戶。對(duì)于<deny>元素,?表示拒絕匿名用戶訪問(wèn),而*表示拒絕所有用戶訪問(wèn)。
圖6.5授權(quán)過(guò)程為了測(cè)試如圖6.5所示的目錄和文件的組織,在IIS中創(chuàng)建一個(gè)虛擬目錄并把這個(gè)虛擬目錄和home目錄鏈接。然后以下面的步驟測(cè)試頁(yè)面:
(1)在你的瀏覽器中使用URL:http://localhost/home/home.aspx訪問(wèn)home.aspx。
(2)點(diǎn)擊ViewManagerPage按鈕。
(3)C#函數(shù)Response.Redirect將顯示loginForm.aspx。
(4)輸入有效的用戶名和口令,例如分別把“Jones”和“jjdan”作為用戶名和口令。(5)顯示被保護(hù)的頁(yè)面managerPage.aspx。現(xiàn)在你是一個(gè)鑒定通過(guò)的用戶,被授權(quán)可以進(jìn)行其他請(qǐng)求,并把這些請(qǐng)求記錄在一個(gè)信息記錄程序中。
(6)返回到home.aspx頁(yè)面。
(7)再次點(diǎn)擊ViewManagerPage按鈕。
(8)這次不再詢問(wèn)用戶名和口令,managerPage.aspx出現(xiàn)。因?yàn)殡S著請(qǐng)求一起被傳送的鑒定信息記錄程序根據(jù)ASP.Net表格鑒定模塊(它對(duì)每一個(gè)請(qǐng)求進(jìn)行監(jiān)聽(tīng))識(shí)別出你已是一個(gè)鑒定通過(guò)的用戶,甚至識(shí)別你為Jones。(9)關(guān)閉你的瀏覽器,重新開(kāi)始新會(huì)話,打開(kāi)home.aspx。
(10)再次點(diǎn)擊ViewManagerPage按鈕,你被要求再次注冊(cè),因?yàn)榘汨b定信息的信息記錄程序是一個(gè)會(huì)話信息記錄程序,這就意味著當(dāng)你關(guān)閉你的瀏覽器時(shí),它就被破壞。
(11)使用無(wú)效的用戶名和口令重復(fù)上述步驟,例如用mmj和dragonBall,訪問(wèn)將被拒絕。
(12)點(diǎn)擊ViewAdminPage按鈕重復(fù)上述步驟。上面給出的例子有幾個(gè)問(wèn)題??诹钜院?jiǎn)單的文本形式存儲(chǔ)。在credentialspasswordFormat="[Clear|MD5|SHA1]">的另外一個(gè)選項(xiàng)能夠保護(hù)口令。
①M(fèi)D5:使用MD5哈西算法對(duì)口令進(jìn)行加密;
②SHA1:使用SHA1哈西算法對(duì)口令進(jìn)行加密。
鑒定和授權(quán)按給定的順序進(jìn)行檢查。如果列表很長(zhǎng),這個(gè)過(guò)程會(huì)較慢。進(jìn)一步,如果列表需要隨時(shí)改變,維護(hù)過(guò)程將會(huì)很困難而且易于出錯(cuò)。解決方案是用數(shù)據(jù)庫(kù)存儲(chǔ)用戶名和口令。因?yàn)樵跀?shù)據(jù)庫(kù)領(lǐng)域,數(shù)據(jù)庫(kù)的讀寫問(wèn)題已被很好的解決,訪問(wèn)和控制過(guò)程變得相對(duì)容易。6.2.3使用安全套接層
安全套接層(SSL)定義了加密協(xié)議,它對(duì)在HTTP和TCP/IP網(wǎng)絡(luò)上的通信提供數(shù)據(jù)保密性和數(shù)據(jù)完整性(數(shù)字化簽名)。IIS在它的SSL協(xié)議中用X.509碼系統(tǒng)提供對(duì)Web應(yīng)用的HTTPS安全訪問(wèn)。為了在Web服務(wù)器中使用HTTPS,需要一個(gè)由公碼和私碼組成的安全證書,在服務(wù)器上裝了這個(gè)證書之后,客戶就可以使用HTTPS連接訪問(wèn)服務(wù)器。
一個(gè)服務(wù)的安全證書類似于一個(gè)人的駕駛執(zhí)照,它說(shuō)明了這個(gè)服務(wù)在提供服務(wù)方面有一定的可信性。但它并不能保證服務(wù)的質(zhì)量。證書由獨(dú)立的組織或公司提供,例如,GeoTrust,GlobalSign,Thawte和VeriSign。在Windows2008服務(wù)器下安裝SSL證書的步驟如下:
①打開(kāi)Internet信息服務(wù)管理器;
②右鍵點(diǎn)擊缺省Web站點(diǎn)并選擇編輯綁定;
③從類型下拉列表中選擇HTTPS;
④從SSL證書下拉列表中選擇證書并點(diǎn)擊OK。
為了測(cè)試證書是否安裝成功,可以在瀏覽器中輸入HTTPS地址訪問(wèn)一個(gè)服務(wù),例如:https://localhost/secureConnectionServices/service1.svc
Windows通信基礎(chǔ)(WCF)是最新的面向服務(wù)計(jì)算的部署環(huán)境。它擴(kuò)展了ASP.Net以更好的支持面向服務(wù)的軟件開(kāi)發(fā),特別是在可靠性和安全性方面有了很大提高。WCF是WinFx的一部分,WinFx是WindowsVista和7,Windows7,Wingdows2008以及Windows2010的一個(gè)新的編程環(huán)境。我們將在下一章使用WCF開(kāi)發(fā)服務(wù)。在本章,我們將討論WCF提供的安全性、可靠性以及事務(wù)性質(zhì)。6.3Windows通信基礎(chǔ)的可信計(jì)算6.3.1WS安全性
WCF在多個(gè)層次支持多種安全方法。安全方法包括鑒定、授權(quán)、加密以及完整性。部署了安全機(jī)制的層包括信息層和傳輸層。
鑒定:WCF支持在ASP.Net中討論的所有的鑒定方法,包括IIS安全性、集成的Windows安全性以及基于表格的安全性。另外,它支持X.509證書,它使用公鑰機(jī)制加密信息并以產(chǎn)生的數(shù)字簽名作為憑證。X.509說(shuō)明了公有碼證書的標(biāo)準(zhǔn)格式以及鑒定路徑有效的算法。授權(quán):WCF支持在ASP.Net中討論的所有授權(quán)方法,包括訪問(wèn)控制列表以及基于角色的授權(quán)。另外,它支持XSI標(biāo)準(zhǔn),那是一個(gè)基于聲明的授權(quán)方法。
傳輸安全:保護(hù)在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)。SSL(SecureSocketLayer)是一種在HTTPS協(xié)議中為數(shù)據(jù)加密的通用機(jī)制。傳輸安全性依賴于用戶選擇的綁定機(jī)制。例如,如果使用wsHttpBinding,安全機(jī)制是SecureSocketsLayer(SSL)。表6.3列出了WCF支持的綁定選項(xiàng)。表6.3WCF支持的綁定消息安全:不管傳輸層是否會(huì)對(duì)傳送的數(shù)據(jù)加密,消息安全通過(guò)在消息發(fā)送到傳輸層之前,給消息加密并簽名以確保消息的保密性。它意味著每個(gè)消息包含保持消息安全的必要的數(shù)據(jù)和消息頭。因?yàn)橄㈩^的組合有很多種,所以可以包含任意多種憑證。如果和其他服務(wù)交互,而該服務(wù)需要傳輸機(jī)制并不支持的特定憑證類型時(shí),或者這個(gè)消息必須用于多個(gè)服務(wù),而每個(gè)服務(wù)都需要不同的憑證類型時(shí),這就變成了一個(gè)必要的要素。傳輸和消息安全性可在Web.config文件中定義,代碼如下,這里wsHttpBinding用于說(shuō)明傳輸安全,Windowscredential用于說(shuō)明消息。
<system.serviceModel>
<bindings>
<wsHttpBinding>
<bindingname="myBinding">
<securitymode="Message"/>
<messageclientCredentialType="Windows"/>
</binding></wsHttpBinding>
</bindings>
</system.serviceModel>
下面來(lái)自“WCF在線指南”的代碼演示了如何創(chuàng)建一個(gè)wsHttpBinding對(duì)象并初始化對(duì)象的域。
//Createthebindingforanendpoint.
NetTcpBindingb=newNetTcpBinding();
b.Security.Mode=SecurityMode.Message;
//CreatetheServiceHostforrunningacalculatorservice.UribaseUri=newUri("net.tcp://MachineName/tcpBase");
Uri[]baseAddresses=newUri[]{baseUri};
ServiceHostsh=newServiceHost(typeof(Calculator),baseAddresses);
//Addanendpointusingthebindingandanewaddress.
Typec=typeof(myService);
sh.AddServiceEndpoint(c,b,"MyEndpoint");
//Setacertificateasthecredentialfortheservice.sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine,
StoreName.My,
X509FindType.FindBySubjectName,
"");
try
{sh.Open();
Console.WriteLine("Listening");
Console.ReadLine();//PressEntertoterminate
sh.Close();}
catch(CommunicationExceptionce)
{Console.WriteLine("Commmunicationerror:{0}",ce.Message);
Console.WriteLine();
}
catch(System.Exceptionexc)
{Console.WriteLine("Anunforseenerroroccurred:{0}",exc.Message);
Console.ReadLine();}6.3.2WS可靠性
Web服務(wù)和Soc應(yīng)用大都是基于Web及因特網(wǎng)的,不僅安全性,而且可靠性也是一個(gè)關(guān)注點(diǎn)。
OASIS(OASIS,2004)定義的WS可靠性是一個(gè)基于SOAP的規(guī)格說(shuō)明,能滿足對(duì)Web服務(wù)和SOC應(yīng)用來(lái)說(shuō),至關(guān)重要的可靠消息的要求。當(dāng)應(yīng)用層的消息協(xié)議也必須保證某種程度的安全性和可靠性時(shí),HTTP之上的SOAP就顯得有些不足。這個(gè)規(guī)格說(shuō)明定義了當(dāng)前Web服務(wù)標(biāo)準(zhǔn)環(huán)境下的可靠性,它被設(shè)計(jì)成和其他的補(bǔ)充協(xié)議聯(lián)合使用,并建立在以前的經(jīng)驗(yàn)之上,例如ebXML消息服務(wù)(ebMS)。WS可靠性說(shuō)明定義了以下可靠性特征:
①保證消息傳送,或至少一次的傳送語(yǔ)義。
②保證消息不被復(fù)制,或最多一次的傳送語(yǔ)義。
③保證消息傳送和不被復(fù)制,或者僅一次的傳輸語(yǔ)義。
④保證一組消息中消息傳送的順序。
WS可靠性支持可靠消息,這種可靠性與傳輸無(wú)關(guān),基于SOAP協(xié)議提供的服務(wù)質(zhì)量包括消息的可靠傳送??煽肯⒂邢铝刑卣鳎孩倏煽繒?huì)話適用于通信雙方都在線的場(chǎng)景。他們處理消息級(jí)的故障,包括丟失消息、復(fù)制消息和接收的消息不符合順序。
②消息隊(duì)列,例如MSMQ,主要處理當(dāng)發(fā)送消息時(shí),消息的接收者不在線的情況。它確保了發(fā)送者和接收者之間的可靠通信。
可靠性會(huì)話通過(guò)消息的標(biāo)識(shí),隊(duì)列號(hào),接收前得到消息的通知來(lái)實(shí)現(xiàn)。下面由(OASIS,2004)給出的例子說(shuō)明了包含上述信息的請(qǐng)求以保證可靠性會(huì)話。<Request
xmlns="http://docs.oasis/wsrm/2004/06/wsreliability1.1.xsd"
xmlns:soap12="/2003/05/soapenvelope"
soap12:mustUnderstand="1">
<MessageIdgroupId="mid://20040202.103832@wsr"><SequenceNumnumber="0"groupExpiryTime="2005-02-02T03:00:33-31:00"/>
</MessageId>
<ExpiryTime>2004-09-07T03:01:03-03:50</ExpiryTime>
<ReplyPattern><Value>Response</Value></ReplyPattern>
<AckRequested/>
<DuplicateElimination/>
<MessageOrder/>
</Request>WCF可靠性會(huì)話是WS可靠消息協(xié)議定義的SOAP可靠消息的實(shí)現(xiàn)。
WCFSOAP可靠消息在兩個(gè)端點(diǎn)間提供了可靠性會(huì)話,這里提供的可靠性是端到端的,不用考慮消息兩端之間中介的數(shù)量和類型。這種端到端通道包含沒(méi)有使用SOAP的任何傳輸中介,例如HTTP代理,或者使用了SOAP的中介(因?yàn)槎它c(diǎn)間傳輸?shù)南⒁骃OAP協(xié)議)??煽啃詴?huì)話通道通過(guò)“交互”通信實(shí)現(xiàn),因此通道連接的服務(wù)在流延遲的情況下,即在相對(duì)短的時(shí)間內(nèi),可并行運(yùn)行并交換和處理消息。這種耦合意味著這些組件共同推進(jìn)或共同失敗,因此在它們之間不提供隔離。下面的配置文件顯示了客戶和服務(wù)之間通信時(shí)使用了reliableSessionOverHttps設(shè)置。
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<system.serviceModel>
<client>
<!thisendpointhasanhttps:address>
<endpointname=""
address=https://localhost/servicemodelsamples/service.svcbinding="customBinding"
bindingConfiguration="reliableSessionOverHttps"
contract="Microsoft.ServiceModelSamples.myService"/>
</client>
<bindings>
<customBinding>
<bindingname="reliableSessionOverHttps">
<reliableSession/><httpsTransport/></binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>6.3.3事務(wù)
事務(wù)是一系列動(dòng)作的集合,包含信息交換和狀態(tài)修改。為了滿足請(qǐng)求或數(shù)據(jù)完整性目標(biāo),動(dòng)作集合必須被看成一個(gè)單位或一個(gè)原子操作。一個(gè)事務(wù)中的動(dòng)作必須全部完成,才是一個(gè)已完成的事務(wù),并且是長(zhǎng)期的數(shù)據(jù)庫(kù)改變。事務(wù)的一個(gè)典型例子是電子賬單的在線支付。至少有兩個(gè)動(dòng)作你的請(qǐng)求才會(huì)被激活:一個(gè)是從你的賬戶取款,另一個(gè)是對(duì)公司的賬戶存款。很顯然,如果僅從你的賬戶取錢而沒(méi)有存款是不可接受的,反之亦然。在計(jì)算機(jī)硬件設(shè)計(jì)中,我們有類似的情況叫做不可見(jiàn)操作。我們需要設(shè)計(jì)硬件指令在一步中執(zhí)行兩個(gè)操作:檢查標(biāo)記,如果標(biāo)記未加鎖,為標(biāo)記加鎖。這種不可見(jiàn)操作允許程序?qū)Y源執(zhí)行互斥操作。
事務(wù)是應(yīng)用級(jí)的,經(jīng)常由較長(zhǎng)的操作序列組成。采用硬件解決方案確保事務(wù)全部完成或全部不做是不可能的。因此執(zhí)行事務(wù)的軟件解決方案必須滿足下列要求:
原子性:包含在事務(wù)中的原子動(dòng)作必須全做或全部不做。也就是說(shuō),動(dòng)作要么100%完成,要么一點(diǎn)也不做。即使硬件、軟件發(fā)生失效,或斷電,也必須保證原子性。一致性:事務(wù)的結(jié)果必須是一致的并能保持所有相關(guān)系統(tǒng)的數(shù)據(jù)的完整性。例如,在轉(zhuǎn)賬的情況下,如果從一個(gè)賬戶中提取100美元,則存到另一賬戶中也必須是100美元。
隔離性:實(shí)現(xiàn)事務(wù)原子性和一致性的原則是定義一組確認(rèn)前的動(dòng)作,它是暫時(shí)性的并且對(duì)其他活動(dòng)不可見(jiàn)。當(dāng)動(dòng)作中的所有參與方成功完成了它們的部分,仲裁者(獨(dú)立機(jī)制)要求所有參與方同時(shí)確認(rèn)。在確認(rèn)結(jié)束時(shí),仲裁者檢查結(jié)果的一致性,并只有當(dāng)結(jié)果一致時(shí),才確保結(jié)果對(duì)其他活動(dòng)可見(jiàn)。如果任何一方?jīng)]有執(zhí)行它的動(dòng)作,或者動(dòng)作集合的結(jié)果不一致,仲裁者將要求所有方停止或者回滾到執(zhí)行事務(wù)之前的狀態(tài),這樣就好像沒(méi)有執(zhí)行過(guò)動(dòng)作一樣。在事務(wù)完成之前事務(wù)的所有操作必須是隔離的。持久性:一旦事務(wù)被仲裁者標(biāo)記為全部完成,結(jié)果將會(huì)放在最終目標(biāo)中,例如數(shù)據(jù)庫(kù),并將是長(zhǎng)久的。參與的任何一方不能取消已經(jīng)被確認(rèn)的動(dòng)作。如果需要進(jìn)行變更,則會(huì)啟動(dòng)一個(gè)新的事務(wù)。
WCF實(shí)現(xiàn)了WS原子事務(wù)(WSAT),它是一個(gè)由BEA,IBM以及Microsoft開(kāi)發(fā)的并得到許多公司和組織支持的互操作事務(wù)協(xié)議,目前已成為OASIS標(biāo)準(zhǔn)(http://docs.oasis/wstx/wsat/2006/06)。WS原子事務(wù)的WCF實(shí)現(xiàn)是基于微軟分布式事務(wù)仲裁者(MSDTC)的事務(wù)管理器。WSAT采用Web服務(wù)消息完成分布式事務(wù),在異質(zhì)事務(wù)結(jié)構(gòu)中以互操作方式做協(xié)調(diào)。WSAT用兩階段確認(rèn)協(xié)議保證分布式應(yīng)用、事物管理者和資源管理者之間事務(wù)的原子性。WCF支持多種事物標(biāo)準(zhǔn),包括WSAT,OleTrasaction以及TransactionNego。當(dāng)完成客戶應(yīng)用和服務(wù)應(yīng)用間的事務(wù)時(shí),所使用的事務(wù)協(xié)議由綁定決定,綁定是由客戶選擇的端點(diǎn)上的服務(wù)暴露的。有些WCF系統(tǒng)提供的默認(rèn)綁定是OleTransactions協(xié)議,并以此作為事務(wù)的傳播格式,而其他系統(tǒng)的默認(rèn)綁定是WSAT。在一個(gè)給定的綁定中,事務(wù)協(xié)議的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 度企業(yè)員工合同范本集錦
- 企業(yè)信息化建設(shè)技術(shù)服務(wù)合同書
- 大型公共建筑防水合同合同
- 商場(chǎng)廣告租賃合同模板集
- 房地產(chǎn)套內(nèi)面積交易合同標(biāo)準(zhǔn)
- 家禽養(yǎng)殖購(gòu)銷合同2025
- 保姆服務(wù)合同協(xié)議
- 2025年專利權(quán)益轉(zhuǎn)讓合同樣本
- 度船運(yùn)服務(wù)合同
- 個(gè)人合資企業(yè)股東合作協(xié)議合同
- GB/T 43635-2024法庭科學(xué)DNA實(shí)驗(yàn)室檢驗(yàn)規(guī)范
- 《社區(qū)康復(fù)》課件-第五章 脊髓損傷患者的社區(qū)康復(fù)實(shí)踐
- 2024年01月北京市地質(zhì)礦產(chǎn)勘查院所屬事業(yè)單位招考聘用筆試歷年高頻考題(難、易錯(cuò)點(diǎn)薈萃)答案帶詳解附后
- 新產(chǎn)品開(kāi)發(fā)(toshiba案例分析組)
- 網(wǎng)絡(luò)傳播概論(彭蘭第5版) 課件全套 第1-8章 網(wǎng)絡(luò)媒介的演變-網(wǎng)絡(luò)傳播中的“數(shù)字鴻溝”
- 4.1.1 有理數(shù)指數(shù)冪-參考課件
- 雷達(dá)簡(jiǎn)介講解課件
- 人教版六年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)大單元教學(xué)任務(wù)單
- JJF(新) 112-2023 微量殘?zhí)繙y(cè)定儀校準(zhǔn)規(guī)范
- 2024銷售人員年終工作總結(jié)2篇
- 2024年牛排行業(yè)分析報(bào)告及未來(lái)發(fā)展趨勢(shì)
評(píng)論
0/150
提交評(píng)論