吴卫东
摘要:校園一卡通在我国各高校广泛使用,随着应用的普及,对校园一卡通的应用需求也越来越大,基于卡片的现场应用已不能满足目前的网络化应用发展,一卡通开设电子账户,开放应用接口是发展必然趋势。该文以某公司的一卡通电子账户接口为例,详细分析了接口应用方法、Web Service安全机制的实现,为相关系统集成和应用开发提供了可借鉴的应用方法,有一定的参考价值。
关键词:校园一卡通;Web Service;加密签名
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)27-0194-03
1 概述
分布式技术发展解决了多机网络化应用的需求,广泛被使用的分布式技术有DCOM、CORBA和Web Service。
1)DCOM是微软公司提出的分布式组件对象模型,具有COM组件的一些基本特性。从分布式应用系统的角度来看,DCOM组件是COM组件的无缝扩展,使其能够支持在局域网、广域网甚至Internet上不同计算机对象之间通讯[1]。由于DCOM缺乏众多的平台支持,极大地制约了代码的可重用性和DCOM应用的可扩展性。
2)CORBA分布计算技术是OMG组织基于众多开放系统平台厂商提交的分布对象互操作内容的基础上制定的公共对象请求代理体系规范。它是为处理基于对象的分布式计算系统之间的移植和互操作而定义的一套框架性标准和规范[2]。它允许应用之间相互通信,主要功能是为客户提供对象请求代理服务。CORBA的特点是大而全,互操作性和开放性较好。但使用CORBA编程过于复杂,而且供应商不能一致地遵守规范,并且其可移植性也比预期要差很多。
3)Web Service[3]是描述一些操作(利用标准化的XML消息传递机制可以通过网络访问这些操作)的接口。Web Service是用标准的、规范的XML概念描述的,称为Web服务的服务描述。它具有完好的封装性、松散耦合、标准协议规范的开放性、高度的可集成性。
目前高校一卡通应用已经非常广泛,在餐饮、水电、图书等方面都是有卡应用,随着电子商务的发展,无卡应用已经成为较热门的技术应用。一卡通系统中的无卡应用,就是应用Web Service电子账户接口开发的第三方系统,它的开发应用,拓展了高校校园一卡通系统的服务功能,提高了一卡通参与教学管理、生活服务的水平。
2 Web Service应用安全性
网络中使用Web Service,安全性是首要前提,发布的Web Service,有时希望只有授权的用户才能调用,虽然Web Service的wsdl描述文件是开放的,但是如果没有权限的访问者则无法调用返回信息。为了实现Web Service权限控制,通常采用身份验证的方式,常用的方法有以下几种:
1)Web Service以SoapHeader验证
SoapHeader为Web Service的头部信息,头部信息可用于相关的验证等功能。SOAP消息头一般包含消息体或处理方式相关的信息,如路径、签名、认证等。利用属性机制可以获取控制SOAP消息头的句柄,对SOAP消息头进行自定义,然后将头数据传递到Web Services 方法或由方法返回头数据。由于消息头数据不是Web services方法的参数,所以与Web Services方法的功能无关。
2)Web Service以IIS验证(windows集成验证) 方式验证
该验证方式是通过设置IIS禁用匿名访问、选用“集成windows验证”来实现,采用windows集成验证的优点是安全高、访问性好,缺点是部署工作量大、移植不方便。
3)Web Service以Session方式验证
该验证方式是在服务端代码设置参数[WebMethod(EnableSession=true)] 来允许Session。客户端调用时实例化代理类的CookieContainer属性来完成Web Service验证。
3 Web Service电子账户接口概述
1)一卡通电子账户接口结构如下:
2)Web Service参数类型
根据Web Service实际需要,Web Service接口可以设计成调用方法或调用实体,在一卡通电子账户接口中,使用实体为参数,以方便编程使用,示例如下(一卡通电子账户接口wsdl描述文件):
-
- xmlns="http://www.w3.org/2001/XMLSchema"> - -
= newTranUserWeb ServiceService();
userWeb Service.Credentials = newNetworkCredential("验证用户名","验证密码");
(5)实例化接口对象,以调用接口获取返回实体
只有Web Service电子账户接口头验证通过,才能取得接口方法的权限,然后通过实例化接口对象,来访问和调用接口方法。
WebReferenceTranUserWeb Service.ReqDTO reqdto = new WebReferenceTranUserWeb Service.ReqDTO();
reqdto.interfaceName = orderenty.getInterfaceName();//接口名称
reqdto.interfaceVersion = orderenty.getInterfaceVersion();//接口版本号
reqdto.thirdcode = orderenty.getThirdcode();//接口编码
reqdto.fmsg = fmsg; //加密密文
reqdto.gmsg = gmsg;//加密密钥
WebReferenceTranUserWeb Service.ResDTO resdto = new WebReferenceTranUserWeb Service.ResDTO();
resdto = userWeb Service.tranLogin(reqdto);//调用接口,返回实体对象
(6)用证书对返回数据进行解密、验签,得到XML数据包
ResXmlDTO resXmlDTO = newResXmlDTO();
if (!"0".Equals(resdto.code)) {
BLL.MessageShow ms = newMessageShow();
ms.Alert(resdto.code + ":" + resdto.message); //返回调用错误信息}
else{ rescode = RSACrypt.Decrypt_Xml(pub_cerfilename, pri_cerfilename, pri_cerfilepwd, resdto.fmsg, resdto.gmsg, ref real);// 解密、验签
resXmlDTO = getCom(real); // 解析XML,得到ResXmlDTO }
(7)通过解析XML数据包得到返回数据原文数据
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; }
通過以上步骤,基本实现了Web Service电子账户接口的调用,从调用接口的过程不难发现:一卡通Web Service电子账户接口的安全性与银行接口相当,具有较高的安全性。
5 Web Service电子账户接口在开发应用时需重视的方面
1)第三方系统收缴费项目分账
由于一卡通Web Service电子账户接口绑定了单一的一卡通商户帐号,所以在第三方系统中,如果收缴费项目超过一项时,必须进行分帐记录,以便于分项统计收缴费情况。
2) 第三方系统与校园一卡通的对账
为了确保财务账目平衡,第三方系统应该与一卡通系统进行对账,以保证资金交易真实性和安全性,确保意外情况下的“本地多”与“本地少”交易信息能够被发现并得到人工处理。
3) 第三方系统的安全防护
第三方系统应用时,如果网络应用范围较大、有安全隐患,则应在第三方系统的登录页、交易密码提交页采用SSL[4]加密传输技术,以保证敏感信息不被恶意侦听。
6 结束语
本文以面向应用的实例研究,对一卡通Web Service电子账户接口的技术背景和安全性技术作了详细的分析,并详细介绍了接口的开发应用方法、步骤。Web Service电子账户接口是一卡通提供给第三方系统的对接,是一卡通系统拓展应用的关键所在,通过该接口,可以实现第三方系统的收缴费和身份验证,为高校财务服务提供了一个新的途径,它的成功应用,完善了高校数字化校园的功能,对提高学校办学能力、提升核心竞争力有积极的意义。
参考文献:
[1] 蔡亮,程雅琼. 分布式对象模型应用技术研究[J].自动化与仪器仪表,2010(5).
[2] 贾素来. 三种分布式对象技术分析[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