OSB-Split Join调用安全web服务



我创建了一个新的Split Join(在OSB workshop应用程序中)。然后我使用"调用服务"操作来调用不安全的业务服务。到目前为止没有问题。当我为我的业务服务分配安全策略时,OSB不接受。以下是OSB研讨会中的错误消息:[并行、作用域、调用服务]不支持BusinessService"OSB/1_0/BusinessServices/TestBS"的WSDL绑定:不支持服务功能"WS-Security"。如何在splitJoin中调用安全的业务服务?

感谢

我将对user2364825的正确答案进行一个稍微扩展的版本。

Split Join实际上是一个进入旧产品的"窗口"(这就是为什么它的外观和行为与OSB不同)。该产品有一些限制,包括无法使用WS_POLICY。

有两种常用的解决方法。

方法#1。使同一WSDL的一个版本去掉WS_POLICY,并在Split Join中使用它。从Split Join中,使用剥离后的WSDL调用中间代理,后者反过来使用原始WSDL调用业务服务。

BizService(Stripped WSDL)->Split-Join->Proxy2(Stripped WSDL)->BizService(Real WSDL)

只有当WS_POLICY标头是由OSB代码创建的时,这种方法才有效。

如果通过Split Join发送的消息已经有一些SOAP标头(包括策略),那么这些标头将丢失,并且方法#1不起作用。

方法#2。制作一个自定义的WSDL,它用所有的SOAP头等来包装原始消息。将该WSDL用于Split Join,将包装好的消息传递给一个展开代理,然后调用真正的代理/biz。

BizService(Wrapper WSDL)->Split-Join->Proxy2(Wrapper WSDL)->BizService(Real WSDL)

第二种方法更复杂,但也更强大。例如,它可以很容易地扩展到支持用户头(Split Join也不支持它们),传递调试信息和几乎所有其他信息。

这种方法是在我的GenericParallel服务中实现的,它完成了以上所有内容和更多内容。

我还有一篇博客文章,详细介绍了通过SplitJoin传递SOAP头的过程。(WS_Policy毕竟只是一个SOAP头)。

YOu永远不能调用在WSDL中定义了WS_POLICY的基于WSDL的代理/业务服务。您需要有一个中间业务/代理来将消息传递给包含WSDL服务的WS策略。

最新更新