LINUX DOTNET      Linux DotNET 中文社区

Linux .NET编程与应用技术之专业网站:www.linuxdot.net !     返回首页    
   
[楼主] 基于 DotNET 的 WEB Service 安全与性能优化(转)

摘要:加强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中就可以进行自定义身份验证了。这种身份验证模式自主性比较强,但要注意的是要加强自定义身份验证的安全性。 

2、WEB SERVICE安全模式 
DOTNET FRAMEWORK和公共语言运行库支持两种安全模式 

(1) 基于角色的安全 
在WINDOW的权限机制中一个角色包含有多个身份;一个身份也可能被授予多个角色。一个或多个角色与一个身份的结合叫做主体。在DOTNET中提供了通用身份、通用主体及WINDOW身份、WINDOW主体两类身份和主体。分别是利用WINDOW自带的主体安全机制和自定义主体安全机制来构造DOTNET系统的权限机制。 

(2) 代码访问的安全 

一般来说代码访问安全的工作方式是在代码被允许执行前,代码所驻留的程序集会在一个特定的代码组中进行成员身份验证,如果成员身份验证通过,该程序集就会被赋予与代码访问组相关联的权限。当然代码访问的安全还包含了代码访问权限;在DOTNET中例如用EnvironmentPermission类控制对环境变量的访问;FileIOPermission控制对文件系统的访问等等诸如此类都是代码访问权限的体现。 
四、压缩SOAP提高WEBSERVICE性能 
SOAP是基于XML编码的,而XML文件其实就是一个文本文件,因此SOAP消息也可以看作一个文本流。如果我们采用压缩文本流的方法将会大大提高网络传输的效率,从而也达到我们对WEBSERVICE性能的优化。 
从操作系统的角度分析存储压缩的文本将会比存储没有压缩的文本少80%的空间。也意味着在网络上传输内容需要更少的时间,对于使用文本通信的客户端服务器应用程序来说,将会表现出更高的效率。 
当网络传输的内容是文本的时候,通过压缩,它的尺寸可以减少80%。这就意味着在客户端和服务器之间带宽的需求也可以减少类似的百分比。为了压缩和解压缩,服务端和客户端则占用了CPU的额外资源。但升级服务器的CPU一般都会比增加带宽的费用便宜,所以压缩是提高传输效率的最有效的方法。 
我们可以通过SOAP扩展来截取SOAP然后进行对请求的SOAP进行压缩,对响应的SOAP进行解压。 

五、通过异步访问服务器端WEB方法 
异步访问主要是针对WEBSERVICE客户端所采用的。异步与同步的最主要的区别简单的讲就是异步没有马上返回结果,而同步则是马上返回结果。但是实际上异步访问是大多客户端访问服务器的方法。异步访问在DOTNET中必须定义一个代理函数,通过代理函数来访问WEBSERVICE的WEB方法。从操作系统的角度上说,实际上就是开辟一个线程来访问服务器端的WEB方法。这样可以提高WEBSERVICE客户端访问服务器端的WEB方法的性能。 

六、通过类型化数据集提高访问数据库性能 
类型化数据集是DataSet类的派生类,既然是派生类,那么也就继承了DataSet的所有方法、事件和属性。 
类型化数据集提供了强类型方法、事件和属性。这意味着可以按名称而不是使用基于集合的方法来访问表和列。这里指的强类型是指给出的一个XSD文件,使用DOTNET附带的XSD.EXE工具生成强类型DataSet。 
由于强类型DataSet中已经存有表的架构信息,所以将大大提高访问数据库的速度。如果我们在WEBSERVICE访问数据库的表时采用类型化数据集也将大大提高WEBSERVICE访问数据库的性能。 

综上所述,我们可以采用加密SOAP头,以及通过SOAP扩展对SOAP消息进行加密。并可以通过身份验证与WEBSERVICE安全模式以及代码访问安全技术从而达到提高WEBSERVICE的安全性的目的。通过压缩SOAP以及客户端异步访问,采用类型化数据集访问数据库这些措施提高了WEBSERVICE的性能。 

结束语:网络的安全性以及网络程序的性能优化是网络技术中的核心问题之一,上文所谈到的技术只是针对基于DOTNET的XML WEB SERVICE的安全性及性能优化。如果从未来的网络系统的安全及性能上考虑,更重要的是要使用户程序或用户组件能更好的与网络操作系统、网络数据库及硬件相结合。在提高用户程序或组件的安全和性能的同时还要提高与网络操作系统、网络数据库及硬件结合后的安全和性能,这样才是网络安全及性能优化的发展方向。 

作者:匿名   发布时间:08年03月14日   可选操作:删除 回复

 
   
   

留言回复:
标题: * 标题必填
作者:   * 请填上你的名字  
操作键:   * 填入几个字母表示是您写的,便于进一步操作
发言内容:
 
发贴者须知:
1、您无需注册即可发贴,但是,贴子内容必须在法律法规和社会公德所允许的范围内;
2、本站专注IT技术,谢绝包括政治、社会、情感等任何与IT技术无关的贴子在本站发表;
3、本站保留对任何贴子进行删除、禁用、更改、举报、追究等所有权利;
 
今天是: 周一  周七  周二  周三  周四  周五  周六