Web Service 、WS-Security、Java和.net的互通(五)

2007-12-25    来源:网络    我要评论
分享到:
| |

导读:在互连网应用中Web Service已经得到了广泛的认同,同时也是因为这种广泛的应用,使得Web Service在规范化方面越来越成熟。企业和企业之间的信息交互,很重要一点就是信息的安全性,电子商务等互连网应用这方面的需求更为突出,如果没有安全的保证,没有客户或者企业愿意将信息在网上交互,同时也不会信任任何接受到的信息。然而,作为SOA的有效技术手段,Web Service的动态性很强,服务的开发

关键词:Web Service WS-Security Java .net

 

  二.配置.net的客户端

  首先,作为测试就建立了一个C#的Windows Application,然后在默认的form上面加了一个button作为激发调用服务端的事件控制载体。用.net来调用web service通常情况使用增加一个web reference来注入这个远程服务,不过这边要特别特别强调,如果你要使用WSSE的话,不要急于先建立一个Web Reference,首先要将你的安全策略配置好,然后再建立web reference,不然自己手动的要去修改后台客户端代码。那么接着来说说.net的WSE。

  .net提供的WSE(Web Services Enhancements)是用来增强对于Web Service的支持配置(包括了WS-Security等规范)。当前.net的WSE最新版本是3.0的,可以很方便的集成到VS2005中,而它的2.0版本主要是针对过去的VS2003版本,不过两者都是可以用的,但是在配置上面有一些差异,同时使用的方便程度也有些差距,2.0使用起来相对3要复杂一些。不过我们这里介绍的都是通过设置WS-Policy来应用WS-Security,这样比较方便,同时代码简洁,业务逻辑和具体的WS配置分开,是一种较好的使用模式,.net也支持代码内嵌WS-Security逻辑来实现WS-Security的使用。

  我先来说一下3如何使用。安装好3以后,可以在我们的项目右键菜单中最下面看到WSE 3.0 setting,直接选择这项,弹出类似的设置页,第一页最顶上的一项选中。

  然后选择Policy Tab页面设置,首先选中Enable Policy,然后选择Add,输入一个Policy的名称,后面就是一个向导配置页面,第一页的选择如下图

  后面第一个要选择的x.509证书是本地的密码对存在的证书,也就是用来签名并向服务端发起请求的证书所在位置,选择了LocalMachine,然后再选择证书,也就是上面我导入到系统中的myisvdemo证书。然后出现如下图

  将配置修改成图中所示,首先不要选择支持1.1扩展,因为.net和java对1.1扩展的支持实现有所差异,特别是签名回执上,连域名都不一致,所以使用起来有问题。然后我们现在只是要用sign-only的功能,因此就选择这项。

  下一页是选择服务端响应时使用什么证书作为解析的证书,这里就选择local Machine的alisoft证书。至此Policy全部配置完成,关闭配置文件。在我们的工程里面会新增加一些文件,如下图所示:


  其中在references中的是引入的第三方包,主要是为了将普通的web Service的代理类转变成为支持WSSE的代理类(这也是为什么我说不要先急着建立web reference的缘故,如果先建立web reference的话),打开Reference.map中的reference.cs文件,可以看到服务代理类是继承System.Web.Services.Protocols.SoapHttpClientProtocol,而如果在配置好策略以后服务代理类就会自动继承 Microsoft.Web.Services3.WebServicesClientProtocol,此时的服务代理类才可以支持WSSE的功能,因此如果先建立reference就要手动的去修改这些客户端文件。

  然后打开wse3policyCache.config文件,这个文件就是刚才配置的Policy文件,修改establishSecurityContext="false",这个参数如果为true的话,会连续两次发送请求,后一次的请求内将不带有Policy中配置的信息(这个具体的我还不是很清楚,只是看到一个国外的人询问微软工程师的时候,认为这个是个缺陷,但是微软工程师则认为这是一个让用户集成自己配置的扩展点,不过个人认为,所谓扩展点应该是在默认没有扩展的时候不影响原有的配置)。第二需要在我们的axis2中除了配置signature还需要配置timestamp,默认每一次请求.net都会自动将timestamp作为action执行。

  打开app.config文件,这里面指定了web service的policy配置文件,这里没有什么需要修改的,只需要按照他生成的内容即可。然后建立好web Reference,这个十分简单,就是输入wsdl的URI,然后填入服务的名称即可。最后一部就是写测试代码,重新打开Form1.cs,在button的onclick事件中写入下面的测试代码:

private void button1_Click(object sender, EventArgs e)

        {

// AccountServiceWse是你的客户段代理类,有WSSE的增强功能,参看reference.cs文件

            AccountServiceWse service = new AccountServiceWse();

 

            //这个客户端代理类需要指定刚才配置的策略名称  

            service.SetPolicy("clientPolicy");

    

            //简单的测试代码

            accountService.ArrayOfAccountBean result = service.getUserAccountArr("test");

        }


Web Service 、WS-Security、
 Web Service 、WS-Security、Java和.net的互通(一)
 Web Service 、WS-Security、Java和.net的互通(二)
 Web Service 、WS-Security、Java和.net的互通(三)
 Web Service 、WS-Security、Java和.net的互通(四)
 Web Service 、WS-Security、Java和.net的互通(五)
 Web Service 、WS-Security、Java和.net的互通(六)
 Web Service 、WS-Security、Java和.net的互通(七)
 Java Web服务:WS-SecurityPolicy建模与验证

 
 
 
 
分享到:
 
 

.NET Web服务

 
在移动的操作系统争夺战中,Android和iOS都有自己的忠实追随者。那么对于哪一个操作系统更好,我们是否能给出明确的答案呢?
 
HTML5是HTML的最新版本,目前,作为最好的HTML,它得到了广泛的赞誉。HTML5为业务人员,开发人员和客户提供了哪些帮助呢?它就没有不足吗
 
在2000年末,在社交媒体开始嵌入Web API之前,术语Web API并没有在大多数人脑中形成这个概念。很多人联想到API,就是应用编程接口的缩写,而且是伴随像Facebook……
 
自动化功能测试,或用户界面(UI)测试,以难以维护而著称,而且没有足够的能力找出缺陷。然而,在大多数情况下出现故障的原因不是测试工具或者测试框架,而是个别测试本身跟踪设计不良。
 
钻石级别的NetBeans IDE——或者其他Java IDE的特性是使应用程序开发者能够快速、有效地建立并维护Java代码。语法高亮颜色显示、代码自动完成、提示、以及代码模板,我们能没有他们吗?

热门技术手册排行

 

本专题分六部分探讨SOA设计模式,当初设计面向服务架构的一大初衷就是降低服务间耦合度,由此提高服务的灵活性和自由度。

 

ESB(Enterprise Service Bus,企业服务总线)是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。

 

TOAGF是一个架构框架,简而言之,TOGAF是一种协助发展,验收,运行,使用,和维护架构的工具。它是基于一个迭代(Iterative)的过程模型,支持最佳实践和一套可重用的现有架构资产。

 

业务流程管理(business process management,bpm)不是一个新概念,甚至不是一个新名词。它是从相关的业务流程变革领域,如业务流程改进(bpi)、业务流程重组(bpr)、业务流程革新中发展起来的。流程管理技术也是从早期的工作流管理、eai、流程自动化、流程集成、流程建模、流程优化等技术中发展起来的。

 

云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。

 

随着开源技术越来越成熟,一个稍有开发经验的人通过学习就可以用开源的产品和技术构建一套可用的系统。对于从事软件开发的人员,尤其是对Java或动态语言相关领域的人来说,“开源”也许是他们最喜爱的单词。但是,很多时候我们需要的不仅仅是一个可用的系统,而是希望这个系统开发更简易、性能更高和扩展性更好等。这确实是一个令人头痛的问题。本指南很多地方都是点到为止,要深入了解相关信息的读者请借助参考资料、网站等自行挖掘。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录