BizTalk调用WS-Security的web services

最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk调用OTM的web services。

OTM的云服务,仅支持WS-Security的Username Token验证方式。

所以需要使用UsernameToken Web Service Security Policy,并使用HTTPS加密此SOAP消息的传输。

  OTM发布的web services是基于java的,也就是说这也是个biztalk调用的java开发的基于WS-Security的web services的例子。

https的请求内容格式如下:

POST https://URL HTTP/1.1

Content-Type: text/xml; charset=utf-8

SOAPAction: "process"

Host: host

Content-Length: 6115

Expect: 100-continue

Accept-Encoding: gzip, deflate

Connection: Keep-Alive

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

<env:Header>

<ns1:Security>

<ns1:UsernameToken>

<ns1:Username>GUEST.ADMIN</ns1:Username>

<ns1:Password>CHANGEME</ns1:Password>

</ns1:UsernameToken>

</ns1:Security>

</env:Header>

<env:Body>

...your message content goes here...

</env:Body>

</env:Envelope>

  1. 引用OTM的web services

在VS的BizTalk project中使用ADDàAdd Generated Items… à Consume WCF Service:

引用OTM的web services提供的wsdl URL:

WSDL包括相应的xsd文件能够获取到,点击下一步就会出错:

试过N多次,在这一步死活就是过不去,引用不成功,只能理解为双方兼容性问题。

引用在线的wsdl不成功,就试试引用wsdl文件。使用svcutil.exe工具根据web

Services提供的wsdl的URL生成wsdl和相应的xsd文件:

可以看到生成了两个文件:xmlns.oracle.com.apps.otm.IntXmlService.wsdl和xmlns.oracle.com.apps.otm.xsd,这就是biztalk引用文件wsdl的原料了。

再在VS的BizTalk project中使用ADDàAdd Generated Items… à Consume WCF Service,这次选Metadata File:

下一步:

选择前面生成的两个文件,一个wsdl文件,一个xsd文件。结果还是出错:

把wsdl文件和xsd合并成一个文件再试。

查看wsdl文件如下:

把xmlns.oracle.com.apps.otm.xsd的内容整个的替换掉红框内的内容,把两个文件合并为一个wsdl文件,在bizitalk project再次引用成功,生成三个文件:

  1. 部署BizTalk项目测试

部署这个BizTalk项目后,在biztalk application中导入端口的绑定文件:IntXmlService.BindingInfo.xml,可以看到这是一个WCF-Custom发送端口:

点击这个端口的"Configure…":

Bingding标签的内容:

设置好对方提供的用户名和密码:

设置一个接收端口从一个文件夹接收测试文件,这个发送端口设置Filter订阅这个接收端口,然后再设置一个发送端口订阅这个发送端口返回的消息写到一个文件夹,这个具体过程就不详细描述了。

开始测试,将一个从xsd schema生成的消息实例发送给对方,使用Fiddler截取发送和返回的消息看。

截取到的发送出去的消息是这样的:

截取到的返回的消息是这样的:

很明显,对方返回的消息说安全验证错误。

查看发送出去的消息里面,发现在Envelope里没有Header,就没有把Username Token发送给对方。

仔细检查WCF-Custom发送端口的配置,发现缺少Security的配置。

在发送端口的Binding标签中增加Security Extension:

把security移到最上面的位置,然后设置authenticationMode为UserNameOverTransport,把enableUnsecuredResponse设置为True。

再测试,使用Fiddler截取发送和返回的消息看。

截取到的发送出去的消息是这样的:

可以看到,Envelope中的Header有了,UsernameToken也有了。

截取到的返回的消息是这样的:

可以看到,这个就是对方的正常回应消息了。

时间: 2024-08-06 11:50:36

BizTalk调用WS-Security的web services的相关文章

BizTalk发布WS-Security的web services

最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk发布WS-Security的web services,使用WS-Security的Username Token验证方式. 所以需要使用UsernameToken Web Service Security Policy,并使用HTTPS加密此SOAP消息的传输. 这样的web services是可以跟被java客户端调用的.

myeclipse 6.0 安装axis2插件,调用OBIEE Web Services。

一直使用myeclipse6.0,快速简易,使用过许多版本,还是觉得此版本不错,近期在弄OBIEE Web Services,在此写一篇关于axis2的插件安装. 网上对于这个教程已经许多了,我也只是参照了别人的想法在此记录一篇. 外加一些如何利用axis2调用OBIEE Web Services接口的步骤. 基本步骤参考:http://my.oschina.net/tosoonersky/blog/135924 MyEclipse6.0 Axis2 插件安装 第一步:下载MyEclipse a

iPad上用Codea-SCM调用git web services做版本管理

iPad上用Codea-SCM调用git web services做版本管理 目录 说明 安装 Codea-SCM 远端代码仓库设置 本地 Codea-SCM 设置 说明 在 iPad 上使用 Codea 做项目开发,虽然调试.修改代码很方便,但是有一点比较麻烦,就是 Codea 无法做版本管理,所以有时修改错了,想回退到之前的稳定版本,就没办法了,只能手动保存每个版本的代码. 现在有一种方法可以把 Codea 的项目自动提交到 git 服务器上,可以非常方便地管理你的不同版本. 安装 Code

使用JQuery的Ajax调用SOAP-XML Web Services(Call SOAP-XML Web Services With jQuery Ajax)(译+摘录)

假设有一个基于.Net的Web Service,其名称为SaveProduct POST /ProductService.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://sh.inobido.com/SaveProduct" <?xml version="1.0" encoding=&qu

Java Web services: WS-Security with Metro--referenc

As you know from "Introducing Metro," the reference implementations of the JAXB 2.x data-binding and JAX-WS 2.x Web services standards are at the core of the Metro Web services framework. But in and of themselves, JAXB and JAX-WS provide only ba

Google Maps API Web Services

原文:Google Maps API Web Services 摘自:https://developers.google.com/maps/documentation/webservices/ Google Maps API Web Services 本文将探讨 Google Maps API Web Services,这是一个为您的地图应用程序提供地理数据的 Google 服务的 HTTP 接口集合.本指南仅旨在介绍通用于所有不同服务的 Web 服务和托管信息.每个服务的单个文档位于以下位置:

Using PL/SQL APIs as Web Services

Overview Oracle E-Business Suite Integrated SOA Gateway allows you to use PL/SQL application programming interfaces (APIs) to insert or update data in Oracle E-Business Suite. APIs are stored procedures that let you update or retrieve data from Oracl

【转】ASP.NET Web Services如何工作

转自 http://www.cnblogs.com/zhaozhan/archive/2010/10/17/1853780.html 了解 Microsoft ASP.NET Web 服务方法 (WebMethod) 如何为生成 Web 服务提供一种高效方法.WebMethod 可以将传统的 Microsoft .NET 方法公开为支持 HTTP.XML.XML 架构.SOAP 和 WSDL 的 Web 服务操作.WebMethod (.asmx) 处理程序自动将传入的 SOAP 消息调度到相应

跟我一起学WCF(3)——利用Web Services开发分布式应用

一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 Web Services 概述 Web Services是支持客户端与服务器通过网络互操作的一种软件系统,是一组可以通过网络调用的应用程序API.在Web Services中主要到SOAP/UDDI/WSDL这三个核心概念,下面分别介绍下这三个概念的定义. SOAP:SOAP(Simple Object