惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - chnking

Biztalk AS2开发经验总结 BizTalk发布WS-Security的web services BizTalk中利用ESSO保存外部系统用户凭据 biztalk大规模高性能高可用部署方案 Biztalk 2009在Windows 2008 R2环境中的High Availability(Cluster群集)部署(下)--AA模式 Biztalk 2009在Windows 2008 R2环境中的High Availability(Cluster群集)部署(上)--AP模式 biztalk中使用biztalk adapter Pack适配器之一 – WCF-SQL WCF系列_分布式事务(下) WCF系列_分布式事务(上) Biztalk中Host Instance线程控制 biztalk在用户代码中构造多部分消息 使用biztalk API新建Receive Location 主流SOA厂商和相关产品 WCF系列(九) - WCF安全系列(四) - WSHttpBinding绑定之Transport安全模式 WCF系列(八) - WCF安全系列(三) - netTCPBinding绑定之Message安全模式 WCF系列(七) - WCF安全系列(二) - netTCPBinding绑定之Transport安全模式 - chnking WCF系列(六) - WCF安全系列(一) - basicHttpBinding 深入biztalk的Sequential Convoys保护 IIS客户端证书访问配置
BizTalk调用WS-Security的web services
chnking · 2016-12-12 · via 博客园 - chnking

最近做个项目,biztalkOTMOracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk调用OTMweb services

OTM的云服务,仅支持WS-SecurityUsername 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. 引用OTMweb services

VSBizTalk project中使用ADDàAdd Generated Items… à Consume WCF Service

引用OTMweb services提供的wsdl URL:

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

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

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

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

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

再在VSBizTalk 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移到最上面的位置,然后设置authenticationModeUserNameOverTransport,把enableUnsecuredResponse设置为True

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

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

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

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

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