基于DOTNET的XML WEB SERVICE 安全与性能优化
发表于:2007-07-01来源:作者:点击数:
标签:
摘要:加强XMLWEBSERVICE的安全性以及提高其 性能 是WEBSERVICE面临的挑战。 本文通过DOTNET中提供的加密和各种安全措施来提高WEBSERVICE的安全性;以及通过压缩类对 SOA P消息压缩达到提高WEBSERVICE安全和性能优化的目的;同时采用类型化数据集来提高WEBSE
摘要:加强XML WEB SERVICE的安全性以及提高其
性能是WEB SERVICE面临的挑战。
本文通过DOTNET中提供的加密和各种安全措施来提高WEBSERVICE的安全性;以及通过压缩类对
SOAP消息压缩达到提高WEBSERVICE安全和性能优化的目的;同时采用类型化数据集来提高WEBSERVICE访问
数据库的性能。
关键字:XML、DOTNET、SOAP、WEBSERVICE、安全、加密、性能优化
XML WEB SERVICE的跨平台,跨语言性是勿庸置疑的。基于WEB SERVICE的分布式系统将是WEB SERVICE最大的功能和特点。我们知道未来的网络将提供各种各样的服务,也许操作系统将失去效用,那时人们只要通过浏览器上网享用各种服务,这些服务就是我们的WEB SERVICE。那么这样也给我们同时带来了很多问题,主要的就是WEB SERVICE的安全与优化该怎么有效的解决?这是任何的网络程序都面临的挑战,WEB SERVICE也可谓任重而道远。
本文主要阐述了基于DOTNET的XML WEBSERVICE 数据传输安全性的加强以及如何提高XML WEBSERVICE的性能的一些方法及应用。
一、 SOAP与WEB SERVICE的关系
网络传输离不开网络协议的支持,在OSI网络结构的七层模型中,XML WEB SERVICE应该是应用层的操作,那么应用层中有诸如HTTP等协议,XML WEB SERVICE也就是基于HTTP协议族的。准确的说SOAP(简单对象访问协议)正是HTTP协议族中的一个子协议。它是专门用于WEB SERVICE的,因为SOAP它的内部编码就是XML。顾名思义XML WEB SERVICE中的XML就是指WEB SERVICE中的传输,部署等等相关操作都是基于XML编码的,而SOAP就是用来实现WEB SERVICE数据传输的。可见,SOAP是XML WEB SERVICE的灵魂。我们知道,网络最大的问题就是安全。而
网络安全主要是数据访问的安全。那么WEB SERVICE的安全关键点就在SOAP上。
那么就让我们了解一下SOAP。SOAP全名是简单对象访问协议。简单的来说SOAP消息体包含头条目和体条目。从XML编码角度来说,头条目中声明了体条目中所要用到的命名空间,体条目中封装了则是WEB SERVICE需要传输的数据。当然这是常规的。反之,我们可以从网络安全或性能优化的角度考虑,可以在头条目上数据或在体条目中加上想加的数据。当然,如果你想加密WEB SERVICE传输的数据达到安全的目的其实也就是对SOAP进行加密。
二、加密SOAP头条目及加密SOAP扩展
1、加密SOAP头条目
从代码的角度要加密SOAP头条目,首先必须先定义SOAPHeader的派生类,在派生类中定义的数据成员,将被包含在SOAP头条目中进行传输。
DOTNET FRAMEWORK给我们提供DESCryptoServiceProvider等加密类,我们可以用该类对SOAPHeader定义的派生类的数据成员进行加密。这样使得要传输的数据得到了加密,而不要加密整个SOAP消息。在WEBSERVICE的消费者(客户端)和服务提供者交互SOAP时,两端首先解析的都是SOAP头,所以这样做既可以达到加密的效果,也提高了WEB SERVICE的网络传输的效率。
例如:用WEB SERVICE对客户身份进行验证实现安全登录。客户端就可以把用户名,密码封装在一个SOAPHeader派生类中,然后用加密类对用户名,密码数据域进行加密,到达服务端再进行解密,这样达到安全登录的目的。
2、加密SOAP扩展
从WEBSERVICE生存期剖析,从SOAP请求到SOAP响应,整个传输过程都是基于SOAP的,那如果我们在SOAP请求后和SOAP响应前截取SOAP,然后对截取的SOAP的数据进行加密,那么就可以达到WEBSERVICE网络安全传输的目的。
下面介绍一下加密SOAP扩展的全过程
①从SoapExtension派生一个类
②保存对表示将来 SOAP 消息的流的引用
③初始化 SOAP 扩展特定的数据
④处理 SOAP 消息(加密SOAP消息中的数据就可以在这里进行)
⑤实现以上四步后就可以通过给特定的XML WEB SERVICE方法配置SOAP扩展就可以截取并加密SOAP消息。
三、身份验证与WEB SERVICE安全模式
1、身份验证
一般来说ASP.NET中提供了四种身份验证
(1) 基于
WINDOWS身份验证
顾名思义WINDOWS身份验证是根据WINDOWS操作系统提供的身份进行身份验证的。在DOTNET中提供的类可以用来访问WINDOWS操作系统的用户和组。这种身份验证模式比较适用于内部系统或VPN网络系统。
(2) 基于FORMS(表单)身份验证
表单身份验证也就是基于WEBFORM进行身份验证。当然ASP.NET可以通过配置WEB.CONFIG文件对表单身份验证进行具体的设置,可以加入DOTNET内部的一些加密的措施使常规的表单数据更具安全性。
(3) PASSPORT身份验证
这是MICROSOFT提供的一种身份验证服务。如果你要使用PASSPORT身份验证那么数据将交给PASSPORT来进行验证,实际上PASSPORT就是一个提供身份验证及注册等功能的WEBSERVICE。
(4) 其他类型或自定义身份验证
如用自定义SOAP头进行身份验证这就是自定义身份验证,只要你把WEB.CONFIG中
原文转自:http://www.ltesting.net