2004-07-26
Web Services系列:XML网络服务安全 XML网络服务是Microsoft .NET 框架的基础之一,通过按照标准国际互联网协议很好定义的计划性的接口来为网络应用程序提供信息和服务。 但是,商业所创建的XML网络服务也许不希望这些服务对所有人都是可自由得到的。对XML网络服务的访问可以通过与网络站点对一个用户访问授权的限制采用相同的方法限制。除了限制访问,一个XML网络服务也许会需要确定用户数据传输的保密,也保护实现服务的内部商业逻辑和数据存储。 1、 什么是XML网络服务? 一个XML网络服务就是使用标准国际互联网协议可访问的可编程的应用程序逻辑。XML网络服务综合了基于部件开发和World Wide Web 的最好方面。就像部件,XML网络服务表现出黑箱功能性,它可以被重复使用而不用担心服务是怎样实现的。XML网络服务提供了一个定义得很好的接口,或约定,它描述提供的服务。 不像现在的部件技术,XML网络服务不会使用对象模型特定协议来访问,例如Distributed Component Object Model (DCOM)、Remote Method Invocation (RMI)或Internet Inter-ORB Protocol (IIOP)。作为替代,XML网络服务使用普遍存在的网络协议和数据格式访问,例如Hypertext Transfer Protocol (HTTP)和Extensible Markup Language (XML)。 一个XML网络服务约定用XML网络服务接受和生成的术语来描述单独提供的服务。在约定中,不需要XML网络服务是怎样实现的信息。XML网络服务的消费者不需要知道关于平台、对象模型或用来完成服务的编程语言的任何信息。他们只需要理解如何像XML网络服务约定所指定地发送和接收消息。 在创建或者使用XML网络服务时,很可能会遇到一些关键规范和技术。这些规范和技术为基于服务的开发确定了五中需要:
XML 对于一个表现数据的标准方法是明显的选择。大多数XML网络服务相关的规范使用XML来表现数据,同时也用XML程序来描述数据类型。 SOAP 为信息交换定义了一种轻量级协议。SOAP规范的一部分定义了关于如何使用XML来表现数据的一组规则。SOAP规范的其他部分定义了一个可扩展的消息形式,用于表现远程过程调用(RPC)的协议使用SOAP消息格式,并且绑定到HTTP。(SOAP消息可以通过其他协议来交换,但是现在的规范定义只为HTTP绑定。)现在一些主流的系统开发平台,如Microsoft .NET 产品,都使用SOAP作为与XML网络服务通信的主要消息格式。 注意,现在的SOAP规范没有定义开发人员也许会在一个传统分布式对象协议中可以见到的特性,例如对象生命周期管理、分布式处理或安全。所有这些特性可以作为对SOAP的扩充来定义,但是他们没有作为基本规范的一部分来定义。 大多数基于国际互联网的情况不需要状态对象或分布式处理,因为所有都把服务器资源放到远端用户的控制之下(例如,数据库锁定)。特别是,这意味着被XML网络服务公布的服务:
给出一个XML网络服务,有一种标准的方法来说明XML网络服务接受和产生什么样的消息是很不错的,就是去说明XML网络服务约定。一种标准的机制使得这件事情对于开发人员和开发工具创建和解释约定变得更容易。许多约定语言在以前被公布了:Service Description Language (SDL)、 SOAP Contract Language (SCL)和Network Accessible Services Specification Language (NASSL)。 所有这些都已经被由Microsoft和IBM联合开发的新语言所代替:Web Services Description Language (WSDL)。WSDL是一种基于XML的语言。 开发人员也需要一些方法来发现XML网络服务。DISCO (用于发现网络协议)规范定义了一个探索文档格式(基于XML)和一个用于找到探索文档的协议,使得开发人员可以在一个已知的Uniform Resource Locator (URL)发现服务。 但是,在许多情况下,开发人员将不会知道可以发现服务的URL。 Universal Description, Discovery, and Integration (UDDI)为XML网络服务管理指定了一种机制来为他们的XML网络服务地存在做广告,并且使XML网络服务用户确定的感兴趣的XML网络服务的位置UDDI规范有三个部分:
UDDI Business Registry是UDDI规范的一个实现,并且它自己就是一个使用HTTP上的SOAP作为自己的通信协议的XML网络服务。 2、 对XML网络服务的访问限制 XML网络服务可以被实现,因此只有被授权的客户可以访问它们。为了限制对XML网络服务的访问,需要一种鉴别客户的方法。那么,根据客户给出的信任状,可以确定是否批准对服务的访问。 从根本上讲,保证一个XML网络服务的安全与保证网络站点的安全没有什么不同。但是代替批准终端用户访问一个站点,将会批准计算机和商务来访问XML网络服务。 如果确切指定哪个计算机需要访问XML网络服务,就可以使用Internet Protocol Security (IPSec)或者防火墙来限制已知IP地址的计算机的访问。 但是,在大多数国际互联网情况下,将不会知道所有客户的IP地址。在这个情况下,最直接的实现鉴定方法就是增加用来交换消息的协议地鉴定特性。例如,如果通过HTTP发送和接收SOAP消息,就将添加HTTP可用的鉴别特性。Microsoft Internet Information Services 5.0版支持许多HTTP的鉴定机制:
另外一种选项是实现一种定制机制。例如,如果发送SOAP消息,可以定义的XML网络服务约定,这样客户认证就可以在SOAP消息中自己传送了。使用这种方法,需要从消息中找回认证并且实现自己的授权逻辑,但是可以使用想用的任何种类的客户帐户数据库。可以把客户认证当作SOAP头或SOAP中的元素来传送。 因为SOAP消息是XML,如果使用像HTTP这样的协议来传送消息,客户认证将被按照纯文本传送。如果这是不可接受的,应该使用SSL来代替HTTP。 注意使用SSL要比单独使用HTTP要慢很多,因此开发人员应该小心地在安全和性能间进行权衡。为一些XML网络服务发布的操作使用SSL是可能的,而在安全不是很紧要的情况下为操作使用轻量级的技术。 如果为所有安全操作使用SSL的超高的性能负载是不能接受的,其他授权选择就被用到SOAP RPC协定中,并且在XML网络服务上定义特殊的登陆操作,它把认证作为SOAP主体的元素接收,并且返回一个通话钥匙。只有登陆方法将会需要通过SSL发送。其他消息可以通过HTTP发送,包括或者在SOAP头或者在SOAP主体中的通话钥匙。这种方法冒着通话钥匙被劫持的危险性,但是减小了客户的代码被偷的危险性。 也许会怀疑是否Microsoft Passport会被使用来限制对XML网络服务的访问。从理论上来说,Passport应该被使用来为一个XML网络服务的客户授权。但是,Passport现在把注意力集中于对终端用户授权,而不是应用程序、计算机或商业。所以,实际上,会发现潜在的客户没有并且也不希望去获得一个Passport。 一些XML网络服务将需要为终端用户授权。在这种情况下,会希望Microsoft Passport可以使用。但是在Passport的现在的执行情况来看,如果网站在终端用户的利益上调用服务,这里就没有安全的方法使用户输入他的Passport用户ID和密码,而让XML网络服务去验证用户是否已经登陆(并且获得用户的面貌特征,如果需要)。通常,如果XML网络服务想要对一个今天的终端用户授权,它必须依靠客户网站来通过用户的认证。 3、 保护数据 除了授权,SSL协议把数据完整性和数据保密添加到HTTP。当SOAP消息被送到SSL,他们不能在传输时被读取或修改。如果XML网络服务接受包含敏感信息的消息,就会希望让客户通过SSL发送消息。 如果SSL的超重不能被接受,另外一种SOAP主体的选项可以用来进行个体元素加密。数字签名可以被用来确保SOAP主体的元素在传输中没有被窜改。在这个时候,对于XML加密和数字签名没有标准,因此需要定义一个用户愿意支持的自定义机制。 为了进一步保护被XML网络服务使用的数据,数据仓库会被保存在共同的防火墙内。公共防火墙外面的数据仓库将尽可能被锁定-例如,通过限制对XML网络服务合管理员程序的访问。 Microsoft Press? 的David Chappell的 Understanding Windows 2000 Distributed Services 包含了关于SSL如何工作的优秀的概念上的总统看法。对于提供数据完整性和保密,保护内部数据存储,审核和防范未授权用户的攻击的信息,查看Microsoft Press 的Michael Howard的 Designing Secure Web-based Applications for Microsoft Windows 2000。 Web Services系列:XML网络服务安全:4、 ASP安全特性及工具支持 被应用程序服务管理(ASPs)运行的XML网络服务使用本篇文章中描述的相同的审查和授权机制来保护从未授权用户引入的信息。 运行在基于Windows平台的XML网络服务的商业逻辑通常使用COM部件或.NET平台的被管理的类目标。ASP可以更深入确保这个网络服务逻辑不能直接通过用一个特殊用户帐户运行XML网络服务来调用,而对那个用户帐户进行了COM部件或被管理类的访问限制。 ASP.NET 网络服务支持通过SSL发送和接收消息,也支持所有被.NET框架网络类支持的HTTP认证和授权机制。包括Basic、 Digest和NTLM 认证。另外,ASP.NET 网络服务支持Microsoft Passport 认证和为使用主认证帐户数据库的自定义的基于cookie的认证。 .NET架构基于角色的授权和代码访问安全可以被实现使用ASP.NET的XML网络服务使用。
|
信息化软件应用目录 OA 办公自动化系统
CRM 客户关系管理系统
PM 项目管理系统
SCM 供应链管理系统
CC 协同商务系统
BPM 业务流程管理
BI 商务智能
CMS 内容管理系统
KM/KBS 知识管理系统
电子商务系统
HRM 人力资源管理系统
ERP 企业资源计划
EAM 企业资产管理系统
|