点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
晚上好。 我正在努力完成以下任务,希望能对此提供帮助。
设置为Proxy-> SOAP,问题出在SOAP接收器通道的模块链中。
我必须满足我需要使用的外部WebService的安全性要求。 在我的方案中,我已经配置了以下步骤:
1。 在上一个调用中(使用X.509证书对请求进行签名)从另一个服务中获取SAML安全令牌,并将其保存在ABAP后端中。
2。 将此安全令牌和请求数据一起从ABAP发送到PO。
3。 在PO中,首先在ICO的"接口确定"部分中执行XSLT映射,以创建SOAP头并将安全令牌放入该头中。 (并绘制一些其他内容,在这里并不重要。)
4。 然后,将其传递到选中了"不使用SOAP信封"的SOAP接收器通道。
我配置了以下模块链:
我需要AxInvokerBean调用WSAllSender来添加时间戳,并使用密钥库中的证书对时间戳和正文进行签名。 这很好。
然后有效载荷如下:
信封
-标头
--安全性
---签名
---时间戳
--SAML令牌
-身体
但是我需要这个:
信封
-标头
--安全性
---SAML令牌
---签名
---时间戳
-身体
换句话说:我必须将SAML令牌放入"安全性"节点内。 为此,我创建了一个小的XSLT映射,并使用MessageTransformBean对其进行了调用:
<?xml version =" 1.0" encoding =" UTF-8"?>
(我删除了所有名称空间声明,以使其更易于阅读,但在现实生活中,它们在那里)。 在开发过程中,我使用AxInvokerBean和LogHandler在每个模块调用之前保存有效负载。
此映射是我需要调用此WebService的最后一步。 如果我将AxInvoker产生的有效负载放入Eclipse的xslt中,它将产生我想要的内容。 这不是xslt问题。
最后是我的问题:
在此模块链中,xslt根本不执行任何操作,有效负载在调用之前和之后看起来相同(某些空格除外)。 我在xpi_inspector中可以看到已找到并调用了该转换,并且该转换已"成功执行",但是它什么也没做,我不知道为什么。
谢谢!
modules.jpg (28.6 kB)
嗨,克里斯蒂安!
您是否使用Xalan处理器在Eclipse中进行测试?
关于此,Evgeniy。
嗨,克里斯蒂安,
是否可以在这里共享您的输入xml?
还可以尝试在xslt中添加一些日志记录,以便可以看到使用xpi_inspector日志执行xslt时会发生什么。 p>
希望您在Eclipse中使用了正确的xalan版本jar。
https://answers.sap.com/questions/316247/how-to-find-the-xalan-jar-version-in- sap-po-74-sp.html
致谢
Muni
嗨,Evgeniy,
很高兴你在这里。
Xalan和Saxon都可以在我的xslt上正常工作。 在SWCV中,我在Mapping Runtime(第一个界面需要XSLT 2.0)中使用Saxon(而不是先写的Xalan),但是我想那不是模块中使用的。
您知道是否有一种方法可以告诉模块使用哪个处理器? (我能想到的最好的主意是为xslt转换开发自己的模块并在其中使用Xalan,但我希望有一种更简单的方法...)
亲切的问候,
Christian
嗨,基督徒!
在这种情况下很难建议。 我会尝试首先在模板中的"选择"属性中使用"//saml:Assertion",以确保在运行时模块处理过程中以正确的方式评估XPath表达式。
Evgeniy。/p>
一周热门 更多>