看起来这应该很简单,但解决方案一直在逃避我。我的流程是 XML -> XSLT 翻译 -> 使用 Web 服务(具体为 IBM Web Sphere Web Service)。我让这些部分单独工作,但我无法弄清楚如何将用户/传递添加到 SOAP 标头。我认为我应该能够将它们添加到 Mule SOAP 组件的安全选项卡中的键中(我将操作设置为代理客户端)。不幸的是,我无法弄清楚有效的密钥是什么。也许我什至试图使用安全选项卡都离基地很远。所以最终我需要我的传出 XML 包含:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1">
<wsse:UsernameToken>
<wsse:Username>
myUserName
</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">
myPa33W0rd
</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
目前我的 Mule 流程正在推出:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
我是否需要手动添加安全信息(可能在 XSLT 翻译中)?这感觉不对,但我不知道如何添加它。
以下是我的流程中的相关行:
<mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="src\main\resources\MappingMapToChangeCatalogEntry.xslt" outputEncoding="US-ASCII" doc:name="XSLT"/>
<cxf:proxy-client payload="body" enableMuleSoapHeaders="true" doc:name="SOAP"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>