劉曦
(四川省電力公司,四川 成都 610041)
基于WCF的分布系統(tǒng)安全模型研究與應(yīng)用
劉曦
(四川省電力公司,四川 成都 610041)
在企業(yè)內(nèi)、外部各種軟件系統(tǒng)的建立過程中,利用面向服務(wù)架構(gòu)技術(shù)[1](Service-Oriented Architecture,SOA)構(gòu)建了多種分布式的松散耦合系統(tǒng)。SOA技術(shù)能夠最大限度的利用現(xiàn)有軟件資源,整合業(yè)務(wù)和擴(kuò)展功能。Windows通訊開發(fā)平臺(tái)[2]
(Windows Communication Foundation,WCF)是由微軟開發(fā)的一系列支持?jǐn)?shù)據(jù)通信的應(yīng)用程序框架。在企業(yè)級(jí)應(yīng)用中,使用WCF實(shí)現(xiàn)基于SOA架構(gòu)的分布式系統(tǒng),能夠更好的利用WCF的靈活性,對(duì)業(yè)務(wù)層進(jìn)行封裝,并發(fā)布為Web服務(wù)。
在對(duì)企業(yè)內(nèi)辦公自動(dòng)化軟件(Office Automation,OA)與統(tǒng)一通信系統(tǒng)(Unified Communication,UC)進(jìn)行融合的過程中,利用了SOA技術(shù)構(gòu)建了分布式應(yīng)用融合平臺(tái),這其中如何確保系統(tǒng)安全是面臨的主要問題之一。WCF提供了一個(gè)多功能可擴(kuò)展的安全模型,可用于解決分布式系統(tǒng)中包括消息的傳輸與使用,用戶認(rèn)證與服務(wù)授權(quán)等在內(nèi)的系統(tǒng)安全問題,將WCF的安全模型應(yīng)用于分布式應(yīng)用系統(tǒng)中,有效地提供了企業(yè)級(jí)系統(tǒng)安全。
2.1 Web服務(wù)安全
SOA架構(gòu)的技術(shù)基礎(chǔ)是簡(jiǎn)單對(duì)象訪問協(xié)議[3](Simple Object Access Protocol,SOAP)。第一代Web服務(wù)發(fā)布時(shí),SOAP消息并沒有消息加密和防篡改機(jī)制,安全操作完全交由傳輸層負(fù)責(zé)。HTTP/HTTPS協(xié)議的安全功能被用來驗(yàn)證用戶身份和保證消息安全[4]。但是,僅由傳輸層提供的安全措施,導(dǎo)致了Web服務(wù)的實(shí)現(xiàn)局限于傳輸層,這削弱了SOAP協(xié)議的平臺(tái)獨(dú)立性。為了使Web服務(wù)能夠承載更多功能,萬維網(wǎng)聯(lián)盟(World Wide Web Consortium,W3C)制定了Web服務(wù)規(guī)范WS-*,其中WS-Security在消息級(jí)別上提供了對(duì)Web服務(wù)的保護(hù),在安全功能上擴(kuò)展了SOAP協(xié)議。WCF在.NET平臺(tái)中自定義實(shí)現(xiàn)了WS-*規(guī)范的Web服務(wù)協(xié)議棧,在傳輸級(jí)別和消息級(jí)別提供了相應(yīng)的安全機(jī)制。
2.2 傳輸安全
傳輸安全是指利用不同傳輸協(xié)議的安全功能,保證消息發(fā)送者和接受者之間的通信安全。通常使用安全套接字(Security Socket Layer,SSL)和傳輸層安全(Transport Layer Security,TLS)的組合,利用加密技術(shù)和數(shù)字簽名技術(shù)保證Web服務(wù)消息的內(nèi)容。傳輸安全將所有的驗(yàn)證機(jī)制綁定到傳輸實(shí)現(xiàn)上,不利于消息加密算法的擴(kuò)展,同時(shí)SSL/TLS僅提供點(diǎn)對(duì)點(diǎn)的安全,當(dāng)消息離開傳輸層后不再安全。
2.3 消息安全
消息安全使用WS-Security規(guī)范,在SOAP消息上確保消息的保密性和完整性,并完成身份驗(yàn)證。在消息安全中,所有與安全有關(guān)的元數(shù)據(jù),如數(shù)字簽名、加密的元素和密鑰等,都是以自包含的形式出現(xiàn)在SOAP消息中。消息安全與傳輸安全最大的區(qū)別在于,消息在離開傳輸層后不會(huì)破壞消息的安全性。
3.1 聯(lián)合驗(yàn)證
在利用WCF技術(shù)實(shí)現(xiàn)的分布式系統(tǒng)中,通常將用戶驗(yàn)證和授權(quán)功能實(shí)現(xiàn)為Web服務(wù),在調(diào)用Web服務(wù)時(shí),需要驗(yàn)證用戶身份和進(jìn)行授權(quán)判斷。驗(yàn)證不僅包括對(duì)客戶端的驗(yàn)證,有時(shí)也需要對(duì)服務(wù)進(jìn)行驗(yàn)證。在WCF中的驗(yàn)證通常是指客戶端與服務(wù)端的相互驗(yàn)證,常用方式為聯(lián)合驗(yàn)證[5,6],即通過第三方安全令牌服務(wù)(Security Token Service,STS)對(duì)服務(wù)調(diào)用者驗(yàn)證,驗(yàn)證通過后頒發(fā)攜帶著調(diào)用者身份信息的安全令牌。STS本質(zhì)上是一個(gè)WCF服務(wù)的實(shí)現(xiàn)。STS根據(jù)WS-Trust規(guī)范來頒發(fā)安全令牌,并向客戶端提供了4個(gè)操作:頒布、驗(yàn)證、更新和取消,分別用于請(qǐng)求一個(gè)新的安全令牌、驗(yàn)證一個(gè)現(xiàn)有令牌、更新一個(gè)過期令牌和取消一個(gè)不再使用的令牌。STS將Web服務(wù)從各種驗(yàn)證方式和證書類型中分離出來,降低了系統(tǒng)和服務(wù)之間的耦合度。
3.2 域內(nèi)驗(yàn)證
當(dāng)客戶端、服務(wù)和STS都在一個(gè)信任邊界之內(nèi)時(shí),由三者構(gòu)成一個(gè)信任域,在一個(gè)信任域內(nèi)驗(yàn)證過程如圖1所示。
圖1 STS域內(nèi)驗(yàn)證模型
在STS域內(nèi)驗(yàn)證模型中,客戶端首先向STS請(qǐng)求安全令牌(Request Security Token,RST),RST消息中包含了客戶端憑證,用于驗(yàn)證客戶端以及保護(hù)消息內(nèi)容;然后,STS收到RST消息后,驗(yàn)證客戶端憑證。如果驗(yàn)證通過,則STS根據(jù)客戶端憑證建立一個(gè)會(huì)話密鑰和一個(gè)新的安全令牌,其中通過Web服務(wù)的密鑰對(duì)會(huì)話密鑰加密后生成安全令牌。將會(huì)話密鑰和安全令牌插入到請(qǐng)求安全令牌響應(yīng)(Request Security Token Response,RSTR)中返回給客戶端??蛻舳耸盏絉STR消息后提取會(huì)話密鑰和安全令牌,將安全令牌作為請(qǐng)求Web服務(wù)消息的客戶端證書,并使用會(huì)話密鑰保護(hù)消息;最后,Web服務(wù)收到調(diào)用服務(wù)請(qǐng)求后,驗(yàn)證客戶端證書中的安全令牌是否有效,提取會(huì)話密鑰,用會(huì)話密鑰核實(shí)消息保護(hù)。如果Web服務(wù)驗(yàn)證通過,則執(zhí)行服務(wù)操作,并把操作結(jié)果返回給客戶端。
3.3 域間驗(yàn)證
當(dāng)存在多個(gè)信任域時(shí),客戶端希望請(qǐng)求其他信任域內(nèi)的服務(wù)時(shí),需要在不同域中同時(shí)運(yùn)行的STS之間建立信任關(guān)系,如圖2所示。2個(gè)域中運(yùn)行的STS之間存在信任關(guān)系,域A中客戶端從本域中的STS處取得安全令牌,并利用域A的安全令牌訪問域B的STS并獲得一個(gè)域B的安全令牌;從而域A中的客戶端利用域B的安全令牌請(qǐng)求域B中公開的服務(wù)。對(duì)于客戶端而言,STS與STS之間的處理是透明的,客戶端僅需在本信任域STS處驗(yàn)證,就可以跨域訪問服務(wù),從而實(shí)現(xiàn)了單點(diǎn)登錄的功能。
圖2 STS域間驗(yàn)證模型
WCF提供了2種實(shí)現(xiàn)授權(quán)的方法,基于用戶角色和基于聲明?;谟脩艚巧氖跈?quán)方式利用角色來賦予用戶進(jìn)行系統(tǒng)操作的適當(dāng)權(quán)限和訪問資源的許可。在WCF中,用戶身份和對(duì)應(yīng)的角色分別由IIdentity和IPrincipal接口來表示,包括了對(duì)用戶身份的驗(yàn)證和對(duì)用戶角色的驗(yàn)證。
在某些情形下,基于角色的授權(quán)不足以建模和授權(quán)數(shù)據(jù)。WFC提供了基于聲明的授權(quán)方式。聲明是在特定場(chǎng)景下描述某個(gè)對(duì)象(客戶端或用戶)身份的信息,或是作用于某個(gè)特定資源的一個(gè)動(dòng)作。在WCF中,會(huì)把通過驗(yàn)證的用戶憑證和安全令牌映射到一組聲明上,并將這些聲明傳遞給請(qǐng)求的服務(wù)。這些聲明不僅包含客戶端身份信息,同時(shí)還包含了服務(wù)執(zhí)行驗(yàn)證判斷所需要的信息。
在將辦公自動(dòng)化軟件OA系統(tǒng)與統(tǒng)一通信UC系統(tǒng)進(jìn)行融合時(shí),使用了SOA技術(shù)架構(gòu),采用WCF的安全模型進(jìn)行安全驗(yàn)證和服務(wù)調(diào)用,能夠更加安全有效地利用現(xiàn)有資源,并具有更高靈活性和擴(kuò)展性。OA系統(tǒng)主要功能包括人事管理、客戶管理、采購管理、質(zhì)量管理、考勤管理、會(huì)議申請(qǐng)、物料申請(qǐng)和財(cái)務(wù)管理等;UC系統(tǒng)主要功能包括通訊錄服務(wù)、短信服務(wù)、語音與視頻呼叫服務(wù)、即時(shí)消息服務(wù)和郵件服務(wù)等。為了有效的地融合2個(gè)系統(tǒng),除了構(gòu)建各個(gè)服務(wù),還需要對(duì)2個(gè)系統(tǒng)的用戶管理和訪問授權(quán)模塊進(jìn)行重構(gòu),使之適應(yīng)分布式系統(tǒng)的安全訪問模型。融合后的系統(tǒng)基本框架示意,如圖3所示。
圖3 系統(tǒng)框架示意圖
在OA系統(tǒng)和UC系統(tǒng)建立了各自的STS服務(wù),并且在2個(gè)STS服務(wù)之間建立信任關(guān)系。客戶端根據(jù)被調(diào)用服務(wù)所在的信任域(OA系統(tǒng)或UC系統(tǒng)),到對(duì)應(yīng)的STS服務(wù)請(qǐng)求會(huì)話安全令牌,攜帶安全令牌調(diào)用之前請(qǐng)求的服務(wù)。當(dāng)訪問跨域服務(wù)時(shí),客戶端會(huì)先到本域的STS處進(jìn)行驗(yàn)證并得到安全令牌,之后根據(jù)本域的安全令牌訪問建立信任關(guān)系的其他域STS獲得可訪問最終服務(wù)的令牌,并訪問最終服務(wù)。
⑴安全模型的選擇
在OA系統(tǒng)與UC系統(tǒng)融合時(shí),為了保持服務(wù)和消息的跨平臺(tái)特性,采用了消息安全模型;同時(shí),由于涉及到2個(gè)系統(tǒng),使用聯(lián)合安全驗(yàn)證模型,保證系統(tǒng)的擴(kuò)展性。在WCF提供的豐富可配置環(huán)境中,使用預(yù)定義的安全配置模式wsFederationHttpBinding,就可以指定使用消息安全和聯(lián)合驗(yàn)證模式,從而建立相應(yīng)的安全策略,并在服務(wù)運(yùn)行時(shí)執(zhí)行這些策略。在服務(wù)端配置wsFederationHttpBinding綁定,公開收到安全令牌的服務(wù)聯(lián)合端點(diǎn)。
在Security元素中的Mode屬性設(shè)置為Message,表示使用消息安全模式驗(yàn)證客戶端和保護(hù)消息。IssuedTokenType表示使用的安全令牌類型為SAML1.1,因此STS服務(wù)必須支持頒布SAML1.1令牌。
⑵基于聲明的授權(quán)配置
在OA系統(tǒng)和UC系統(tǒng)的STS服務(wù)中,定義了針對(duì)不同服務(wù)和操作的各類聲明。在ClaimTypeRequirements元素中,服務(wù)端僅配置當(dāng)前服務(wù)進(jìn)行授權(quán)所需的聲明類型是否必須,如用戶名稱聲明和用戶權(quán)限聲明。在IssuerMetadata元素中指明安全令牌頒發(fā)機(jī)構(gòu)的元數(shù)據(jù)地址,客戶端可據(jù)此發(fā)現(xiàn)STS端點(diǎn)。
⑶服務(wù)端的授權(quán)驗(yàn)證
為了便于管理和維護(hù),采用了集中化授權(quán)邏輯,分別定義了OA信任域的授權(quán)管理器OaAuthorizationManager類和UC信任域的授權(quán)管理器UcAuthorizationManager類,二者繼承自抽象類ServiceAuthorizationManager,并重寫了方法CheckAccessCore。CheckAccessCore方法接受WCF操作上下文參數(shù),對(duì)每個(gè)傳入請(qǐng)求集中驗(yàn)證聲明信息,判斷是否允許訪問。
⑷構(gòu)建OA_STS和UC_STS
在實(shí)現(xiàn)OA系統(tǒng)和UC系統(tǒng)的STS服務(wù)時(shí),使用Windows身份驗(yàn)證基礎(chǔ)架構(gòu)(Windows Identity Foundation,WIF),提供了支持基于聲明的安全模式的架構(gòu)。分別定義了OA系統(tǒng)STS服務(wù)OaSecurityTokenService類和UC系統(tǒng)STS服務(wù)UcSecurityTokenService類,二者繼承自抽象類SecurityTokenService,定義了STS的關(guān)鍵功能。通過構(gòu)造函數(shù)接受STS配置實(shí)例,來指定特定功能;通過GetScope方法來驗(yàn)證一個(gè)安全令牌是否可以提供給客戶端需要使用的服務(wù),并提供2個(gè)證書,用以加密和簽名此令牌;通過GetOutputClaimsIdentity方法為生成的安全令牌提供聲明,最后公開實(shí)現(xiàn)的OA_STS和UC_STS服務(wù)。
⑸生成客戶端代理
最后,使用SvcUtil工具或者添加服務(wù)引用的方式生成客戶端代理類,并在客戶端配置中可以看到2個(gè)綁定ws2007FederationHttpBinding、ws2007HttpBinding。前者用于確定與最終服務(wù)的通信參數(shù),后者用于確定與相應(yīng)STS服務(wù)的通信參數(shù)。
WCF完全遵循了WS-*的標(biāo)準(zhǔn),利用WCF的安全模型能夠有效地解決的分布式系統(tǒng)中傳輸和消息安全、驗(yàn)證和授權(quán)策略等問題,同時(shí)不損失系統(tǒng)的擴(kuò)展性。此外,WCF技術(shù)還提供對(duì)事務(wù)、安全和編碼等的統(tǒng)一管理,協(xié)調(diào)了各服務(wù)器之間的系統(tǒng)操作。因此,在辦公自動(dòng)化軟件OA系統(tǒng)與統(tǒng)一通信UC系統(tǒng)進(jìn)行融合時(shí),使用WCF技術(shù)構(gòu)建分布式系統(tǒng)不失為一個(gè)理想的選擇。
[1]王建偉.基于Web Services的SOA架構(gòu)設(shè)計(jì)方法的研究[D].大連:大連海事大學(xué),2006.
[2]鄭文軒.基于WCF的分布式程序的研究和實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2012.
[3]孟維然.SOAP協(xié)議的安全性研究與應(yīng)用[D].沈陽:沈陽工業(yè)大學(xué),2005.
[4]李俊旭,常朝穩(wěn).Webservice安全通信模型的研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2009(2):28-30.
[5]王洪添,張曉磊,于治樓.基于WIF的身份聯(lián)合管理的研究[J].信息技術(shù)與信息化,2010(3):32-33,70.
[6]劉志強(qiáng).云計(jì)算中基于聲明的訪問控制研究[D].西安:西安電子科技大學(xué),2013.
Research and Application of Security Model of WCF-based Distributed System
在分布式系統(tǒng)中安全方面的挑戰(zhàn)是面臨的主要問題之一,WCF提供了一個(gè)多功能可擴(kuò)展的安全模型,提供了消息級(jí)別和服務(wù)級(jí)別的安全基礎(chǔ)設(shè)施。介紹了WCF的安全機(jī)制,分析和建立了WCF的驗(yàn)證模型和授權(quán)策略,并以辦公自動(dòng)化軟件與統(tǒng)一通信系統(tǒng)結(jié)合為例,分析和研究了如何利用WCF安全模型擴(kuò)展并實(shí)現(xiàn)安全可靠的面向服務(wù)應(yīng)用程序。
WCF SOA STS安全模型信任域
LIU Xi
(State Grid Sichuan Electric Power Company,Chengdu Sichuan 610041,China)
In distributed system,the security challenge is one of the main problems to be faced.WCF provides a multi-functional expandable security model,with message class and service class security infrastructure.Firstly,the security mechanism of WCF is introduced;then the WCF verification model and authorization policy are analyzed and constructed;finally by taking the combination of office automation software and united communication system as an example,the topic of how to use WCF security model to expand and achieve secure and reliable service oriented application program is analyzed and developed.
WCF;SOA;STS;security model;trust domain
TP311
A
1008-1739(2015)18-57-4
定稿日期:2015-08-26