基于.Net平台WEB服务通信安全设计

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:myxiu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:主要讨论了.Net环境下Web Service的体系结构以及Web服务的调用过程。针对在Web Service通信过程中可能存在的安全漏洞,从消息的真实性,机密性,完整性方面进行摸索,可行性的实现了身份认证,SOAP扩展,XML的加密以及数字签名,从而保证Web服务的通信安全。
  关键词: Web Service;身份认证;数字签名加密;SOAP扩展
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)10-2438-03
  Web Service是一种部署在Web上的对象,它们具有对象技术所承诺的所有优点,同时,Web Service是建立在以XML为主的、开放的Web规范技术基础上,因此具有比任何现有的对象技术更好的开放性,是建立可操作的分布式应用程序的新平台。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
  随着移动开发热的推动,Web Service的推广迎来一轮新的高潮。但是由于设计上的不同,Web Service应用带来了新的攻击类型:黑客把恶意代码附加在正常代码上,通过在输入域中输入,从而进入系统。毋庸质疑,Web Service通信安全的研究意义重大。
  1Web Service体系结构简介
  Web Service体系结构是由服务提供者,服务注册中心以及服务请求者共同构建而成的。通俗的理解:服务提供者提供自定义的服务以及访问的接口;服务注册中心的主要功能则注册已经发布的网络服务,进行整理分类以供服务请求者的查找;服务请求者可以通过已经发布的接口进行服务的访问。彼此间交互着发布,查找以及绑定的操作。
  UDDI(统一描述、发现和整合)建了一个平台独立、开放的框架,通过因特网来描述服务,发现业务,并且整合业务服务。它是一套基于Web分布式的、为Web服务提供的信息注册中心的实现标准规范。在Web服务被注册的同时,该标准也能帮助服务请求者找到所需求的服务。
  WSDL(Web Service Description Language) Web描述语言将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。
  SOAP(Simple Object Access Protocol)简单对象访问协议是基于XML实现互联网信息交互的协议。SOAP消息根据实现模式可以分为请求消息和响应消息,实际交互中将请求或者响应消息的参数作为XML节点可以实现跨平台的异构传输。虽然SOAP的请求消息和响应消息略有不同,但是SOAP消息通常是由一个SOAP Envelope、一个可选的SOAP Header和一个SOAP Body组成的XML文档。
  2Net平台下的通信安全设计方案
  2.1基于SoapHeader和来源IP实现安全认证
  Header在Soap消息中提供了一种传递信息的途径,通过Header属性是可以让消息接受者知道应该处理该消息,这些信息可以是与要处理的消息相关联的信息或指示,但是它传递的信息不是应用程序的有效载荷。
  Header是可以在Soap消息传递路径中的中间节点处理的。SoapHeader在缺省情况下由客户端代理对象发送给Web Service,我们可以通过SoapHeader来加载控制信息实现安全认证,.Net平台下实现的具体步骤如下:
  1)创建继承自System.Web.WebServices.SoapHeader的自定义SoapHeader类型。
  2)在WebService中创建拥有public访问权限的自定义SoapHeader字段。
  3)在使用SoapHeader的WebMethod上添加SoapHeaderAttribute访问特性。
  4)生成器会自动为客户端生成同名的自定义SoapHeader类型,同时还会为代理类型添加一个SoapheaderValue。
  SoapHeader多数情形下用来传递类似于用户身份的一些控制信息,当然它的作用远不止这些,有待于实际应用中发掘。
  除此之外,在服务端,我们可以通过HttpContext.Current.Request.UserHostAddress来获取客户端的IP地址,我们只允许指定的IP的服务端进行访问,保证点对点安全。
  2.2通过SOAP扩展修改SOAP消息
  Net平台下的SOAP扩展是是一种有效的作用于SOAP消息的拦截机制,能够在SOAP请求或响应传输之前操纵它们。也就是说,我们可以在SOAP请求消息或者响应消息传输前实现SOAP消息的修改,通过SOAP消息的修改我们可以实现报文的加密或者数字签名,增强消息的通信安全。需要注意的是:当对SOAP消息进行SOAP扩展后,必须在服务端和客户端都对消息进行相应的扩展。
  .Net平台下实现使用SOAP扩展修改SOAP消息需如下步骤:
  1)从SoapExtension派生一个类。
  2)保存对Stream对象的引用,这些对象表示SOAP扩展前后未来的SOAP消息。
  3)初始化SOAP扩展特定的数据。
  4)在适当的SoapMessageStage或阶段中处理SOAP消息。
  public override void ProcessMessage(SoapMessage message){
  switch (message.Stage)
  {
  case SoapMessageStage.BeforeSerialize://在序列化之前,就是还未输出soap消息
  //ToDo break;
  case SoapMessageStage.AfterSerialize:/ /在序列化之后,就是将要输出soap消息
  //ToDo break;
  case SoapMessageStage.BeforeDeserialize://在反序列化之前,正在得到输入的soap消息
  //ToDo break;
  case SoapMessageStage.AfterDeserialize: //在反序列化之后,就是得到输入消息
  //ToDo break;
  }
  2.3实现SOAP消息的XML Encryption
  通过向基础结构中注入SOAP扩展,可以检查或修改每个序列化和反序列化阶段前后的SOAP消息。在此基础上,开发过程中可以将客户端的SOAP请求或者服务端的SOAP响应进行自定义的XML加密。
  加密SOAP扩展可以在.NET Framework序列化客户端参数之后对SOAP消息的XML部分进行加密,而在.NET Framework反序列化该SOAP消息之前,它又可以在Web服务器上对该SOAP消息进行解密。
  XML Encryption是W3C加密XML的标准。加密的過程实际上是先对XML节点的内容进行加密,然后再将替换先前节点的内容。XML的格式不受影响。加密可根据安全性级别的要求采用不同的算法,总体上分为对称加密和非对称加密。
  XML Encryption允许只对文档中部分敏感数据加密,将其他的数据仍处在非加密的状态,缩短了密文的长度,提高了传输效率。
  不仅如此,XML加密还可以对整个XML文件或者XML文件中的某个元素进行加密。XML Encryption体现了自包含的特质,是在原资源的位置上创建一个新的EncryptedData元素完全的替代原资源(使用CipherReference除外)。EncryptedData元素包含着一些列用于描述算法的子元素,同时也包含着密钥信息。KeyInfo元素下的EncryptedKey元素及其子元素包含着关于被保存的密钥的信息。
  在安全性要求更高的项目中,可对整篇文档多重加密,当XML文档发送给多个接收者时,能够保证各个接收者根据自己的密钥读取相应的数据信息,而对其余的数据是不可见的。
  2.4对SOAP消息实现数字签名
  在实际的应用中还需要客户端对SOAP消息进行一次签名,并将签名连同消息一起发送;服务端接受消息后,需要对SOAP消息中的签名进行认证。通过验证才能确定消息在传输过程中没有被更改过,而验证的用户就是对消息签名的用户。
  采用传统的数字签名虽然也可以保证整个XML文档或消息的不可抵赖性、身份认证和数据完整性,但在Web Service的应用环境下却是不够的。若对整个文档或消息进行数字签名,则签名后不能再对其进行修改,因而需要能实现对XML文档或消息的细粒度控制,才能适应Web Service的灵活性要求。引入XML签名,可对已签名文档继续添加签名,同时也能实现对文档选择进行细粒度的签名,根据需要选择不同的元素或元素的属性进行数字签名。
  对SOAP消息的数字签名同样可以发生在.NET Framework序列化客户端参数之后,但是在.NET Framework反序列化该SOAP消息之前,必须对该消息的签名进行验证。
  在.Net平台的System.Security.Cryptography的命名空间下提供了加密服务功能,包括安全的数据编码和解码,以及许多其他操作,这里我们用来实现XML数字签名:
  1)在.NET序列化客户端参数之后创建CspParameters对象,并指定密钥容器的名称。
  2)使用RSACryptoServiceProvider类生成一个对称密钥。将签名RSA密钥添加到SignedXml对象。
  3)创建说明签名内容的Reference对象。并将XmlDsigEnvelopedSignatureTransform对象添加到Reference对象中,然后将Reference对象添加到SignedXml对象中。
  4)通过调用ComputeSignature方法计算签名。
  5)检索签名(一个元素)的XML表示形式,并将它保存到一个新的XmlElement对象中。
  在.NET Framework反序列化该SOAP消息之前,载入SOAP报文后找到元素,并创建新的XmlNodeList对象。加载XML的第一个元素到,使用CheckSignature方法和RSA公钥检查签名。返回的是一个布尔逻辑值,若为false表示验证签名失败,随即可以抛出异常终止Web服务的调用。
  3结束语
  Web Service通信安全是企业级开发中的关键模块。文章从这一角度出发,采用SoapHeader加载控制信息,IP来源验证,SOAP扩展加密,SOAP报文的数字签名等方法来保证服务通信过程中消息的真实性、保密性和完整性,可行的实现了Web Service的安全访问控制。
  参考文献:
  [1]顾宁,刘家茂,柴晓路Web Services原理与研发实践[M].北京:机械工业出版社,2005.
  [2]乔波.Web Services安全技术研究[J].信息安全与通信保密,2007(8).
  [3]周必水,倪慧莉.简单对象访问协议SOAP的研究与分析[J].计算机工程与设计,2002(3).
  [4]钱权.严家德Web Services的安全机制[J].计算机工程,2007,33(22).
其他文献
近些年我国科学技术呈现出快速发展态势,高校和科研机构在科技成果研发和检定方面也取得了非常大的成效,很多科技成果都达到了行业领先水平,但是由于多方面因素的影响导致科
“去年不花钱今年没钱花”,这是广东省人大代表、广州市地税局副局长林如山日前披露的“财政秘密”。据林副局长说,现有财政政策对部门经费的核算是按照上一年使用基数定额确定
该文介绍了一种迈克尔逊干涉仪自动计数器的设计与应用。该计数器通过比较光敏电阻和阈值来采集干涉条纹的变化,同时产生与明暗条纹相对应的电脉冲,再通过单片机来计数并显示
摘要:为解决云计算环境中硬件资源整合问题,分析了云中互联资源的属性,提出一种改进模糊聚类算法。该算法放宽规约条件,考虑到矩阵中数据点的关系无法比较,定义加权因子并构建新的目标函数,先随机选取硬件作为初始聚类中心,然后不断计算隶属度确定聚类中心,重复迭代改进目标函数优化数据集的划分,最后获取属性相似的逻辑资源池。实验结果表明改进算法收敛速度较快,得到的聚类结果较好,适合云环境中具有相似属性的资源整合
在建筑行业不断发展的背景下,使得建筑项目的类型逐渐增多,例如路桥工程。路桥工程项目是建筑行业中的重点性项目,其施工质量与现代化运输业的发展有着关键影响。从本质上来
现阶段,随着经济的进步,社会的环保意识也随之觉醒,与此同时,相关部门对于环保工作的注重程度也愈来愈高。当前,国内环境污染问题比较严重,环保的压力依旧比较大,环境环保作
帕金森的“办公大楼法则”是,某个组织的办公大楼设计得越完美,装饰得越豪华,该组织离解体的时问越近。他发现,许多生意兴隆的公司、影响巨大的组织都设在不起眼的地方,住在简陋的
路桥作为基础设施,其施工质量好坏直接关系着广大人民群众的生命和财产安全,因此应当加强重视。在当前路桥工程施工建设过程中,常用的技术手段之一就是水泥搅拌桩。本文将对
住户现浇板部分钢筋锈蚀,主要是该工程屋面防水未处理好,局部存在渗漏,加之钢筋保护层偏薄,从而致使现浇板板底钢筋产生锈蚀,钢筋截面削弱。
本文针对抗震支吊架中常见的四种抗震斜撑的荷载性能进行试验研究,发现各自存在的薄弱点并给出具体建议。在此基础之上,进一步对四种抗震斜撑组件的循环加载性能进行试验研究