吳衛(wèi)東
摘要:校園一卡通在我國(guó)各高校廣泛使用,隨著應(yīng)用的普及,對(duì)校園一卡通的應(yīng)用需求也越來(lái)越大,基于卡片的現(xiàn)場(chǎng)應(yīng)用已不能滿足目前的網(wǎng)絡(luò)化應(yīng)用發(fā)展,一卡通開(kāi)設(shè)電子賬戶,開(kāi)放應(yīng)用接口是發(fā)展必然趨勢(shì)。該文以某公司的一卡通電子賬戶接口為例,詳細(xì)分析了接口應(yīng)用方法、Web Service安全機(jī)制的實(shí)現(xiàn),為相關(guān)系統(tǒng)集成和應(yīng)用開(kāi)發(fā)提供了可借鑒的應(yīng)用方法,有一定的參考價(jià)值。
關(guān)鍵詞:校園一卡通;Web Service;加密簽名
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)27-0194-03
1 概述
分布式技術(shù)發(fā)展解決了多機(jī)網(wǎng)絡(luò)化應(yīng)用的需求,廣泛被使用的分布式技術(shù)有DCOM、CORBA和Web Service。
1)DCOM是微軟公司提出的分布式組件對(duì)象模型,具有COM組件的一些基本特性。從分布式應(yīng)用系統(tǒng)的角度來(lái)看,DCOM組件是COM組件的無(wú)縫擴(kuò)展,使其能夠支持在局域網(wǎng)、廣域網(wǎng)甚至Internet上不同計(jì)算機(jī)對(duì)象之間通訊[1]。由于DCOM缺乏眾多的平臺(tái)支持,極大地制約了代碼的可重用性和DCOM應(yīng)用的可擴(kuò)展性。
2)CORBA分布計(jì)算技術(shù)是OMG組織基于眾多開(kāi)放系統(tǒng)平臺(tái)廠商提交的分布對(duì)象互操作內(nèi)容的基礎(chǔ)上制定的公共對(duì)象請(qǐng)求代理體系規(guī)范。它是為處理基于對(duì)象的分布式計(jì)算系統(tǒng)之間的移植和互操作而定義的一套框架性標(biāo)準(zhǔn)和規(guī)范[2]。它允許應(yīng)用之間相互通信,主要功能是為客戶提供對(duì)象請(qǐng)求代理服務(wù)。CORBA的特點(diǎn)是大而全,互操作性和開(kāi)放性較好。但使用CORBA編程過(guò)于復(fù)雜,而且供應(yīng)商不能一致地遵守規(guī)范,并且其可移植性也比預(yù)期要差很多。
3)Web Service[3]是描述一些操作(利用標(biāo)準(zhǔn)化的XML消息傳遞機(jī)制可以通過(guò)網(wǎng)絡(luò)訪問(wèn)這些操作)的接口。Web Service是用標(biāo)準(zhǔn)的、規(guī)范的XML概念描述的,稱為Web服務(wù)的服務(wù)描述。它具有完好的封裝性、松散耦合、標(biāo)準(zhǔn)協(xié)議規(guī)范的開(kāi)放性、高度的可集成性。
目前高校一卡通應(yīng)用已經(jīng)非常廣泛,在餐飲、水電、圖書(shū)等方面都是有卡應(yīng)用,隨著電子商務(wù)的發(fā)展,無(wú)卡應(yīng)用已經(jīng)成為較熱門的技術(shù)應(yīng)用。一卡通系統(tǒng)中的無(wú)卡應(yīng)用,就是應(yīng)用Web Service電子賬戶接口開(kāi)發(fā)的第三方系統(tǒng),它的開(kāi)發(fā)應(yīng)用,拓展了高校校園一卡通系統(tǒng)的服務(wù)功能,提高了一卡通參與教學(xué)管理、生活服務(wù)的水平。
2 Web Service應(yīng)用安全性
網(wǎng)絡(luò)中使用Web Service,安全性是首要前提,發(fā)布的Web Service,有時(shí)希望只有授權(quán)的用戶才能調(diào)用,雖然Web Service的wsdl描述文件是開(kāi)放的,但是如果沒(méi)有權(quán)限的訪問(wèn)者則無(wú)法調(diào)用返回信息。為了實(shí)現(xiàn)Web Service權(quán)限控制,通常采用身份驗(yàn)證的方式,常用的方法有以下幾種:
1)Web Service以SoapHeader驗(yàn)證
SoapHeader為Web Service的頭部信息,頭部信息可用于相關(guān)的驗(yàn)證等功能。SOAP消息頭一般包含消息體或處理方式相關(guān)的信息,如路徑、簽名、認(rèn)證等。利用屬性機(jī)制可以獲取控制SOAP消息頭的句柄,對(duì)SOAP消息頭進(jìn)行自定義,然后將頭數(shù)據(jù)傳遞到Web Services 方法或由方法返回頭數(shù)據(jù)。由于消息頭數(shù)據(jù)不是Web services方法的參數(shù),所以與Web Services方法的功能無(wú)關(guān)。
2)Web Service以IIS驗(yàn)證(windows集成驗(yàn)證) 方式驗(yàn)證
該驗(yàn)證方式是通過(guò)設(shè)置IIS禁用匿名訪問(wèn)、選用“集成windows驗(yàn)證”來(lái)實(shí)現(xiàn),采用windows集成驗(yàn)證的優(yōu)點(diǎn)是安全高、訪問(wèn)性好,缺點(diǎn)是部署工作量大、移植不方便。
3)Web Service以Session方式驗(yàn)證
該驗(yàn)證方式是在服務(wù)端代碼設(shè)置參數(shù)[WebMethod(EnableSession=true)] 來(lái)允許Session??蛻舳苏{(diào)用時(shí)實(shí)例化代理類的CookieContainer屬性來(lái)完成Web Service驗(yàn)證。
3 Web Service電子賬戶接口概述
1)一卡通電子賬戶接口結(jié)構(gòu)如下:
2)Web Service參數(shù)類型
根據(jù)Web Service實(shí)際需要,Web Service接口可以設(shè)計(jì)成調(diào)用方法或調(diào)用實(shí)體,在一卡通電子賬戶接口中,使用實(shí)體為參數(shù),以方便編程使用,示例如下(一卡通電子賬戶接口wsdl描述文件):
-
- xmlns="http://www.w3.org/2001/XMLSchema"> - -
= newTranUserWeb ServiceService();
userWeb Service.Credentials = newNetworkCredential("驗(yàn)證用戶名","驗(yàn)證密碼");
(5)實(shí)例化接口對(duì)象,以調(diào)用接口獲取返回實(shí)體
只有Web Service電子賬戶接口頭驗(yàn)證通過(guò),才能取得接口方法的權(quán)限,然后通過(guò)實(shí)例化接口對(duì)象,來(lái)訪問(wèn)和調(diào)用接口方法。
WebReferenceTranUserWeb Service.ReqDTO reqdto = new WebReferenceTranUserWeb Service.ReqDTO();
reqdto.interfaceName = orderenty.getInterfaceName();//接口名稱
reqdto.interfaceVersion = orderenty.getInterfaceVersion();//接口版本號(hào)
reqdto.thirdcode = orderenty.getThirdcode();//接口編碼
reqdto.fmsg = fmsg; //加密密文
reqdto.gmsg = gmsg;//加密密鑰
WebReferenceTranUserWeb Service.ResDTO resdto = new WebReferenceTranUserWeb Service.ResDTO();
resdto = userWeb Service.tranLogin(reqdto);//調(diào)用接口,返回實(shí)體對(duì)象
(6)用證書(shū)對(duì)返回?cái)?shù)據(jù)進(jìn)行解密、驗(yàn)簽,得到XML數(shù)據(jù)包
ResXmlDTO resXmlDTO = newResXmlDTO();
if (!"0".Equals(resdto.code)) {
BLL.MessageShow ms = newMessageShow();
ms.Alert(resdto.code + ":" + resdto.message); //返回調(diào)用錯(cuò)誤信息}
else{ rescode = RSACrypt.Decrypt_Xml(pub_cerfilename, pri_cerfilename, pri_cerfilepwd, resdto.fmsg, resdto.gmsg, ref real);// 解密、驗(yàn)簽
resXmlDTO = getCom(real); // 解析XML,得到ResXmlDTO }
(7)通過(guò)解析XML數(shù)據(jù)包得到返回?cái)?shù)據(jù)原文數(shù)據(jù)
privatestaticResXmlDTO getCom(String real) {
string xml = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(real));
XmlDocument document = newXmlDocument();
document.LoadXml(xml);
XmlElement orderres = document.DocumentElement;
XmlNode orderidNodes = orderres.SelectSingleNode("/orderres/orderid");
XmlNode thirdcodeNodes = orderres.SelectSingleNode("/orderres/thirdcode");
XmlNode amtNodes = orderres.SelectSingleNode("/orderres/amt");
XmlNode orderdateNodes = orderres.SelectSingleNode("/orderres/orderdate");
XmlNode datetimeNodes = orderres.SelectSingleNode("/orderres/datetime");……
ResXmlDTO cx = newResXmlDTO();
cx.Orderid = orderidNodes.InnerText;
cx.Thirdcode = thirdcodeNodes.InnerText;
cx.Orderdate = orderdateNodes.InnerText;
cx.Amt = amtNodes.InnerText;
return cx; }
通過(guò)以上步驟,基本實(shí)現(xiàn)了Web Service電子賬戶接口的調(diào)用,從調(diào)用接口的過(guò)程不難發(fā)現(xiàn):一卡通Web Service電子賬戶接口的安全性與銀行接口相當(dāng),具有較高的安全性。
5 Web Service電子賬戶接口在開(kāi)發(fā)應(yīng)用時(shí)需重視的方面
1)第三方系統(tǒng)收繳費(fèi)項(xiàng)目分賬
由于一卡通Web Service電子賬戶接口綁定了單一的一卡通商戶帳號(hào),所以在第三方系統(tǒng)中,如果收繳費(fèi)項(xiàng)目超過(guò)一項(xiàng)時(shí),必須進(jìn)行分帳記錄,以便于分項(xiàng)統(tǒng)計(jì)收繳費(fèi)情況。
2) 第三方系統(tǒng)與校園一卡通的對(duì)賬
為了確保財(cái)務(wù)賬目平衡,第三方系統(tǒng)應(yīng)該與一卡通系統(tǒng)進(jìn)行對(duì)賬,以保證資金交易真實(shí)性和安全性,確保意外情況下的“本地多”與“本地少”交易信息能夠被發(fā)現(xiàn)并得到人工處理。
3) 第三方系統(tǒng)的安全防護(hù)
第三方系統(tǒng)應(yīng)用時(shí),如果網(wǎng)絡(luò)應(yīng)用范圍較大、有安全隱患,則應(yīng)在第三方系統(tǒng)的登錄頁(yè)、交易密碼提交頁(yè)采用SSL[4]加密傳輸技術(shù),以保證敏感信息不被惡意偵聽(tīng)。
6 結(jié)束語(yǔ)
本文以面向應(yīng)用的實(shí)例研究,對(duì)一卡通Web Service電子賬戶接口的技術(shù)背景和安全性技術(shù)作了詳細(xì)的分析,并詳細(xì)介紹了接口的開(kāi)發(fā)應(yīng)用方法、步驟。Web Service電子賬戶接口是一卡通提供給第三方系統(tǒng)的對(duì)接,是一卡通系統(tǒng)拓展應(yīng)用的關(guān)鍵所在,通過(guò)該接口,可以實(shí)現(xiàn)第三方系統(tǒng)的收繳費(fèi)和身份驗(yàn)證,為高校財(cái)務(wù)服務(wù)提供了一個(gè)新的途徑,它的成功應(yīng)用,完善了高校數(shù)字化校園的功能,對(duì)提高學(xué)校辦學(xué)能力、提升核心競(jìng)爭(zhēng)力有積極的意義。
參考文獻(xiàn):
[1] 蔡亮,程雅瓊. 分布式對(duì)象模型應(yīng)用技術(shù)研究[J].自動(dòng)化與儀器儀表,2010(5).
[2] 賈素來(lái). 三種分布式對(duì)象技術(shù)分析[J].大眾科技,2014(2).
[3] Roman D, Keller U, Lausen H, et al. Web service modeling ontology[J]. Applied ontology, 2005,
1(1): 77 106.
[4] CN-GB. Testing specification for applications of SSL protocol. [GB/T 28457-2012],2012-1-1