WSE2客户端的操作流程(使用的是WSE 2 sp3):

首先还是要设置WSE的Policy到新建项目中去,不过这而WSE 2没有像WSE3那么好的集成到VS2005中,新建好工程以后,建立Web Reference(这和WSE3不太一样,这里先建Web Reference,然后手动的去设置)。同样去选择project菜单的show all files。这时候通过外部打开WSE 2的配置工具,配置工具选择打开新建的这个项目的app.config文件,然后开始配置策略。配置如下列图:

红色部分很重要,需要选择这种协议来序列化获得key reference。

这里配置策略文件有所不同,这里首先会让你输入这个Policy所属的URI,和3不同,3中是在代码中配置进去的,在配置中只是申明,而没有对应配置到具体的哪一个请求,这边可以填入某一个URI,那么你对那个URI的WebService做任何请求的时候都会采取该策略,同时如果你就不填任何内容,直接用他默认的<DefaultEndpoint>,那么所有不在指定URI对应策略中出现的URI请求和响应,都将采取这种策略,我就默认采用这种模式,因为如果不采用这种模式,相应回来的请求就找不到可以使用的策略了(这个出错信息也困扰我不少时间)。继续配置下面的内容:

      

这里我们只需要做signature,所以只配置了签名。

 

这里选择证书根据前面页面中配置的存储位置相关,第一个证书是用来签名的带有私钥的证书。第二个是受信的返回的签名交验证书。

配置完成,并保存。接下去就是要做一些wse3自动作的事情,而在wse2中需要手动修改的内容。首先把project菜单的show all files去掉,然后再选上,就会发现项目中多了一个文件:policyCache.config,选中这个文件然后右键选择Include in project,不然的话每次调试都不会被拷贝到项目执行目录下面(类似于eclipse的src目录中文件在调试中会被拷贝到bin目录下),然后将这个文件的属性Copy to Output Directory设置为Copy always,这样每次修改以后都会被同步过去。然后选择项目右击add reference,加入Microsoft.Web.Services2这个类库,修改Web References下定义的服务的Reference.cs,将服务继承类修改一下,例如我的项目中的服务自动生成以后这么继承:

AccountService : System.Web.Services.Protocols.SoapHttpClientProtocol

修改成为:

AccountService : Microsoft.Web.Services2.WebServicesClientProtocol

这样定义的代理类就可以有WSSE服务增强功能了,不过注意的是如果Update了Web Reference的话,自动会从新生成新的客户端代理,那么又要手动去修改了。(发现如果再次通过wse 2 的配置工具打开app.config文件,选中General下面的框就可以类似于3自动生成了)

然后双击打开policyCache.config文件,做部分的修改:

首先在文件头部有这么一段描述:

      <defaultEndpoint><defaultOperation><request policy="#Sign-X.509" /><response policy="#Sign-X.509-1" /><fault policy="" /></defaultOperation></defaultEndpoint>

这就是刚才配置中提到的默认没有配置固定策略的URI请求采用的策略。去查找文件中response对应的策略配置,修改其中的内容,这儿就是修改Sign-x.509-1的配置。

将:

<wsp:MessagePredicate wsp:Usage="wsp:Required"Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">wsp:Body() wsp:Header(wsa:To) wsp:Header(wsa:Action) wsp:Header(wsa:MessageID) wse:Timestamp()</wsp:MessagePredicate>

修改成为:

<wsp:MessagePredicate wsp:Usage="wsp:Required"Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">wsp:Body()</wsp:MessagePredicate>

因为我们回签的时候并没有设置address部分,也没有timestamp的签名,因此都需要去掉,不然就会出错。

再将<wssp:Integrity wsp:Usage="wsp:Required">中的:

<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">wsp:Body() wsp:Header(wsa:Action) wsp:Header(wsa:FaultTo) wsp:Header(wsa:From) wsp:Header(wsa:MessageID) wsp:Header(wsa:RelatesTo) wsp:Header(wsa:ReplyTo) wsp:Header(wsa:To) wse:Timestamp()</wssp:MessageParts>

修改成为:

<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">wsp:Body()</wssp:MessageParts>

打开app.config文件,增加如下一句(据说会有缺陷,关于超时判断的bug,因此还是加上为好):

<security><x509 storeLocation="CurrentUser" allowUrlRetrieval="true" useRFC3280="true" /><timeToleranceInSeconds>86400</timeToleranceInSeconds></security>

最后在Form1.cs添加测试代码运行测试看看,不过这里的代码如下:

     private void button1_Click(object sender, EventArgs e){AccountService service = new AccountService();accountService.ArrayOfAccountBean result = service.getUserAccountArr("test");}

不在类似于WSE 3需要配置对应的策略,因为在配置文件中已经包含了配置策略的信息。

转载于:https://www.cnblogs.com/batter152/p/3864935.html

.Net(C#)访问X509证书加密的Webservice(六)--WSE 2来订制web service相关推荐

  1. WebService 理论详解、JWS(Java Web Service) 快速入门

    目录 WebService (web服务)概述 WebService 平台技术 WebService 工作原理 WebService 开发流程 常见 Web Service 框架 JWS(Java W ...

  2. 【系统安全】X509证书介绍

    概述 Windows Communication Foundation (WCF) 是 Microsoft 为构建面向服务的应用程序而提供的统一编程模型(摘自MSDN),在分布式环境下的安全问题尤为重 ...

  3. WCF安全之X509证书

    概述 Windows Communication Foundation (WCF) 是 Microsoft 为构建面向服务的应用程序而提供的统一编程模型(摘自MSDN),在分布式环境下的安全问题尤为重 ...

  4. harbor镜像仓库-https访问的证书配置 (docker配置harbor https证书)

    harbor镜像仓库-https访问的证书配置 生成CA证书 随便搞个什么文件夹,用于存放生成的证书 创建key文件: root@eb7023:/data/certs>openssl genrs ...

  5. (转)创建X509证书,并获取证书密钥的一点研究

    创建X509证书,并获取证书密钥的一点研究 作者:肖波 个人博客:http://blog.csdn.net/eaglet ; http://www.cnblogs.com/eaglet 2007/7 ...

  6. java解码p7b证书文件,通过OpenSSL解码X509证书文件

    在Windows平台下,如果要解析一个X509证书文件,最直接的办法是使用微软的CryptoAPI.但是在非Windows平台下,就只能使用强大的开源跨平台库OpenSSL了.一个X509证书通过Op ...

  7. python怎么爬虫https的内容_爬虫15 python 如何处理HTTPS请求访问 SSL证书验证

    1 https和SSL之间是什么关系 https和SSL之间是什么关系:https就是在http上面加了一层ssl协议,在http站点上部署SSL数字证书就变成了https. 现在随处可见 https ...

  8. 关于X509证书和密钥的概念

    证书概述 证书主要包括颁发者和被办法者的信息,以及被颁发者的公钥,和CA机构对这些信息的认证, 主要内容: **版本** 识别用于该证书的 X.509 标准的版本,这可以影响证书中所能指定的信息.迄今 ...

  9. 通过OpenSSL解析X509证书基本项

    在之前的文章"通过OpenSSL解码X509证书文件"里,讲述了如何使用OpenSSL将证书文件解码,得到证书上下文结构体X509的方法.下面我们接着讲述如何通过证书上下文结构体X ...

最新文章

  1. django一个html先后两个form,django 一个页面两个表单 怎么提交
  2. HDU 1495 非常可乐
  3. [Python爬虫] 之十二:Selenium +phantomjs抓取中的url编码问题
  4. 以KNN为例用sklearn进行数据分析和预测
  5. (30)Gulp 文件操作
  6. jieba安装_Jieba库实现词性标注及小说人物角色抽取
  7. 加固机箱设计资料第289篇:基于3U VPX的 5槽加固机箱
  8. python 中文乱码问题深入分析
  9. 电容笔能否替代Apple pencil?高性价比电容笔排行
  10. [置顶]史上最详细最全的Linux上安装Oracle的教程-centos7-humf
  11. durbin watson检验表_DW检验表
  12. iOS - 手机摇一摇
  13. 【一个王朝的背影】--余秋雨
  14. docker: error pulling image configuration
  15. PowerPMAC技术培训------2、PowerPMAC产品介绍
  16. jmeter安装完打不开_安装配置Jmeter教程
  17. 有什么好的电影网站,好的在线电影网站
  18. [转]html实现弹窗的实例
  19. 今日干货|盘点好用的视频剪辑APP
  20. weblogic10.3.6.0的安装和打补丁

热门文章

  1. 做自媒体培训赚的盆满钵满
  2. 工业品器械设备怎么做宣传和推广?
  3. 自媒体新手拍视频从哪开始入手?
  4. 1000个网络摄像头如何组网?
  5. Qt——P20 模态和非模态对话框创建
  6. python入门——P41魔法方法:构造和析构
  7. 排序算法(一)--插入排序法折半插入排序法
  8. azure云数据库_Azure SQL数据库中的地理复制
  9. [补档]noip2019集训测试赛(十)
  10. 华为指标OceanStore