需求–
我有一个场景,我只是数据,我必须通过REST适配器将数据发布到C4COdataAPI。C4C Odata接受3种身份验证类型:OAuth2.0、Certificate和Basic。如果使用OAuth2.0,则不必传递x-csrf-token和session id作为头参数。我必须使用基本身份验证,所以我必须将csrf令牌和会话id传递给我的接收器REST适配器的POST调用。
设计
模块开发
下面的代码用于提取令牌和会话id,并使用模块数据处理方法将其作为输入有效负载传递。
在PO服务器中部署EAR文件。
PO ESR–
创建用于设置动态属性的自定义项,并将其映射到消息映射中的根节点。
要在消息映射中使用的自定义项–
此自定义项将调用GET REST通道,读取动态属性,即模块返回的负载内容,并设置动态属性token和cookie。
PO ID–Channel Configuration–
创建两个通道,大数据网,每个通道用于GET和POST操作。
REST GET Channel的配置–
REST URL–API URL。身份验证-基本/证书操作–获取数据格式–JSON/XML(任意)HTTP头–x-csrf-token=Fetch(获取令牌所需)Module–在标准REST适配器调用之后调用模块(SetTokenValue)。不需要模块参数。
REST POST频道配置–
REST URL选项卡–维护以下屏幕截图中提到的配置。属性名token和cookie表示UDF中提供的名称,云估价,用于将值设置为动态配置属性。您应该阅读此处的值并在HTTP头中设置。
身份验证–基本/证书操作-岗位数据格式–JSON/XML(任意)HTTP头x-csrf-token={token}-这是动态配置的值。cookie={cookie}–这是动态配置中的值。Content Type=application/json
单元测试–
我使用c4codata API ServiceRequestTextCollection尝试了这个票证更新场景。使用PO测试工具运行此场景。您应该在消息监视中看到动态配置。请参阅下面的屏幕截图,
发布此步骤REST适配器将处理要发布到c4c odata api的消息。
结论–
如果任何REST/odata api需要在头中设置令牌和会话id以进行后期操作,新云,则可以按照此方法调用。SAP将在今年晚些时候为REST适配器提供一个补丁,其中包括作为适配器参数的CSRF保护https://blogs.sap.com/2015/01/29/create-sap-pi-adapter-modules-in-ejb-30-standard/用于模块开发。CSRF令牌处理-https://blogs.sap.com/2018/05/29/handling-x-csrf-token-with-sap-pipo/comment-page-1/#评论-462449
,云分析