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客户端调用的。
https的请求内容格式如下:
POST https://URL HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "process"
Host: host
Content-Length:
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>
新建用于发布web servicdes的schema
为测试目的,新建一个简单的用于发布为web servicdes的schema:

新建一个简单的接收请求返回结果的orchestration
为测试目的,新建一个简单的接收前面新建的schema的request,简单映射为response的消息直接返回:

将orchestration的接收端口发布为WCF
部署这个BizTalk project,然后使用BizTalk WCF Services Publishing Wizard把orchestration的接收端口发布为WCF。

要发布使用WS-Security的web servicdes必须使用WCF-CustomIsolate的Transport type,下一步:

选择"Publish BizTalk orchestration as WCF Service",下一步:

选择前面建立的BizTalk project的dll,下一步:

这里显示了选择的dll中包含的orchestration和orchestration包含的可以发布为WCF的接收端口,下一步:

设置发布的WCF的Target namespace,下一步:

这是指定要发布到IIS的路径,同时选择"Allow anonymous access to WCF servicde",允许IIS中匿名访问web services,因为用户的身份验证是在消息内的。
发布完成后,在BizTalk的Application中会生成一个WCF-CustomIsolate的接收端口:

设置WCF-CustomIsolate接收位置的Application Pools
发布的WCF-CustomIsolate的接收位置在IIS中生成的Application的Application Pool默认使用DefaultAppPool,这个Application Pool的Identity是Windows內建的ApplicationPoolIdentity账号,不具有访问BizTalk数据库的权限,所以需要将Application Pool改为具有访问BizTalk数据库的权限Identity的Application Pool。
否则访问发布的WCF会出现这样的提示:

设置WCF-CustomIsolate接收位置的配置
查看WCF-CustomIsolate的属性:

点击"Configure…":

修改这里的Binding。
增加security Extension
增加security Extension,并把它移动到最顶层的位置,并把authenticationMode设置为UserNameOverTransport:

设置textMessageEncoding Extension
将textMessageEncoding的messageVersion设置为"Soap11":

将httpTransport改为httpsTransport
删除httpTransport Extension,增加httpsTransport,因为需要使用TLS进行消息的加密传输:

增加ServicesBehavior
在Behavior标签下,增加serviceCredentials的serviceBehaviors:

确认在UserNameAuthentication下的userNamePasswordValidationMode设置为Windows,表示验证客户端的UsernameToken将使用Windows的用户验证,即客户端的UsernameToken将跟windows的用户进行比对,如果windows的用户有跟客户端的UsernameToken匹配的即验证成功。
测试发布的WCF
可以新建一个简单的c# console应用作为客户端调用发布的WCF,然后用Fiddler抓取通讯的数据格式,判断发布的WCF是否符合WS-Security。
在c# console应用中引用前面发布的WCF:

具体调用WCF的代码如下:

其中的chnking是windows的用户,Jjz123356是这个windows用户的密码。
执行这段代码执行调用WCF的过程,使用Fiddler抓取数据查看请求消息格式为:

可以看到这个请求调用web services的消息格式完全符合WS-Security的格式。
再看,返回的消息格式:

可以看到,服务端返回的正常的结果。
BizTalk发布WS-Security的web services的更多相关文章
- Web Services
Web Services 1. Web Services基本规范概述 1.1. 什么是Web Services Web Services是为实现“基于Web无缝集成”的目标而提出的全新 ...
- Web Services的学习一
1.Web Services可以将应用程序转换成为网络应用程序,也就是说可以通过Web Services,应用程序可以向全世界发布信息,或者提供功能. 而且通过Web Services发布的,可以被其 ...
- BizTalk调用WS-Security的web services
最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk调用OTM的web se ...
- Web Service-- 使用 JDK 发布 WS
Web Service,即“Web 服务”,简写为 WS,从字面上理解,它其实就是“基于 Web 的服务”.而服务却是双方的,有服务需求方,就有服务提供方.服务提供方对外发布服务,服务需求方调用服务提 ...
- 使用DOSGi在OSGi环境下发布Web Services
前言 Apache CXF是一个开源的服务框架项目,而Distributed OSGi子项目提供了基于OSGi远程服务规范的分布式组件实现.它使用Web Services,HTTP上的SOAP手段实现 ...
- 分分钟带你玩转 Web Services
当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来. 毕竟是多家不同的公司的产品,研发开发语言.采用技术框架基本上是百花齐放. 怎样让自家系统提供的服务具有跨平台.跨语言.跨各种防 ...
- So easy Webservice 8.spring整合CXF 发布WS
1.添加jar包(cxf的jar包中包含了spring的jar包),添加spring配置文件 2.web.xml中配置CXFServlet,过滤WS服务的地址 <!-- 配置CXFServlet ...
- Java Web services: WS-Security with Metro--referenc
As you know from "Introducing Metro," the reference implementations of the JAXB 2.x data-b ...
- Google Maps API Web Services
原文:Google Maps API Web Services 摘自:https://developers.google.com/maps/documentation/webservices/ Goo ...
随机推荐
- WEB前端工程师面试题【前端】
1.form中的input有哪些类型?各是做什么处理使用的?2.table标签中border,cellpadding td标签中colspan,rowspan分别起什么作用?3.给Array原型添加一 ...
- C# 处理应用程序减少内存占用
SetProcessWorkingSetSize减少内存占用 系统启动起来以后,内存占用越来越大,使用析构函数.GC.Collect什么的也不见效果,后来查了好久,找到了个办法,就是使用 SetPro ...
- ansible代码分析第一篇--主文件—ansible分析
2016年2月23日,学习,分析ansible代码 ansible是一种运维中使用的批量部署的工具,它本身是一种框架,具体的部署和架构分析,下面这篇文章讲的不错. http://os.51cto.co ...
- sql server 中xml 数据类型的insert、update、delete
近日对SQL操作XML作了如下整理: 1.插入 XML DECLARE @myDoc XMLSET @myDoc = '<Root> <ProductDescription Prod ...
- UE4 去除不正确的水面倒影以及不完整镜头轮廓
最近在做的项目遇到了一点点问题,出现了如下效果 视角对着湖面移动会出现一个显示不完整的轮廓(比较长的蓝色矩形),详细一点就是下图这样,以及近处物体的倒影(从光照的照射角度来看是不应该出现的) 一开始就 ...
- 前台给后台传JSON字符串,后台解析并保存
前台 function BMSure() { var DanWeiName = $("[id$='BusinessName']").val(); var Address = $(& ...
- css布局列表,自适应
关于并列的三列布局结构,从左至右依次为 A, B, C, 宽度分别为180px, 600px, 180px.要求在不改变 HTML 结构的情况下用CSS实现:ABC,CBA,BAC 三种布局及在CBA ...
- SecWeek
“叮铃铃,叮铃铃”清晨闹钟如期而至,每天的这个时候都会是一天中最头痛的时刻,每日坚持早起,渐渐已经开始习惯,扶着沉重的额头,侧身翻起,会觉得世界都在天旋地转. 一个人,悄悄的开门,悄悄的刷牙洗脸,然后 ...
- 【Cocos2d-x 3.x】 动作类Action源码分析
游戏设计中,动作是不可缺少的,Cocos2d-x中所有的动作都继承自Action类,而Action类继承自Ref和Clonable类,整个动作类继承体系如图: FiniteTimeAction是所有瞬 ...
- css技术
CSS是英语Cascading Style Sheets(层叠样式表单)的缩写,它是一种用来表现HTML或 XML 等文件式样的计算机语言. CSS 目前最新版本为CSS2,能够真正做到网页表现与内容 ...