栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CPI系列 透传REST服务并获取令牌及签名

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CPI系列 透传REST服务并获取令牌及签名

前言

REST服务是目前接口调用最通用的方式,通用性似乎都超过了WEBSERVICE. 大部分的互联网公司都是用REST方式发布自己的服务. 并且通过https(加密), token(令牌),sign(签名)等机制确保通讯安全.

本文主要讲解怎么通过CPI透传REST服务,并且在CPI中实现获取token及按特定算法加密获取sign(签名)

感谢黄顾问配置IFlow,给作者机会学习IFow中的脚本写法.

Token and Sign

百度了一下Token和Sign的定义.

获取token(令牌)

一般的系统会发布一个特定的地址,用来供外围系统调用获取token. 

比如腾讯企业微信的API中就有一个获取token的服务, token 一般会有个有效期, 在有效期内,token可以重复使用. 

在所有其它REST服务中, 都需要在http header 或者 报文中添加 access_token. 服务对接收的token执行验证,验证通过再继续后续的处理.

获取sign(签名)

签名是对本次调用内容的合法性验证. 

一般的签名算法是通过把报文的内容按特定规则组合,进行一次或多次MD5加密. 

服务器会按照相同的算法再次加密,并且把加密后获取的sign与传输的sign 进行对比,通过后才进入服务的后续处理逻辑

CPI透传REST

CPI透传JSON的配置非常简单, 相对复杂的是在这个过程中获取token及签名

该配置的大致逻辑

检查传入的JSON中是否存在token,如果存在,则直接进入签名逻辑.

如果不存在token,准备调用token的报文,调用服务,获取token,并把获取的token加入报文中

按服务提供方提供的签名算法,执行加密过程

把签名结果加入报文中,调用REST服务

在返回结果中补充token信息,返回给调用方

如果调用方传入标记(只获取token和sign),则直接返回获取的token和sign.

01

IFlow runtime configuration

在IFlow的空白处点击,拖出底部窗口, 可以修改 runtime configuration. 这里可以限制https 允许的抬头参数

02

CHECK TOKEN

该节点是个脚本节点.通过GROOVY脚本获取报文信息,判断是否传入了token. 并且把传入报文的通用参数写入消息属性, 以便后续使用(包括原始报文).

03

with token

如果传入了有效的token.(token的有效性在发出系统判断,根据token的失效时间判断),直接执行签名步骤

04

准备获取token的报文

05

token sign

对获取token的报文添加签名. 通过脚本添加签名

06

调用token获取

通过 request replay 节点 调用外部系统的token服务, 获取token信息

07

process token

处理令牌

脚本节点, 通过脚本处理获取的token .

获取原始报文,添加token节点,同时把token相关信息写入消息的属性.以便后续使用

08

获取签名失败

如果获取签名失败, 结束

09

sign

签名,脚本节点

对于补充了token的原始报文,添加签名信息

10

仅返回签名

如果调用方传递了抬头参数 get_token_sign. CPI获取token和签名后结束IFlow, 原报文添加token和签名后返回

这个参数的目的: 通过POSTMAN测试目标系统的服务比较麻烦, 所以可以通过CPI服务添加get_token_sign参数来获取该接口的 token ,sign 信息, 然后补充在posman中,以便测试接口

11

调用外部系统的服务

通过request reply 节点调用外部系统的正式服务, 传递的报文在原报文基础上补充了token 及sign 部分.

12

return token

脚本节点

把token补充到外部服务返回的信息中. 以便调用系统能够保存token并在下次调用时根据token的失效日期判断是否可以直接使用.以便提高接口的效率(不必每次都调用获取token的接口)

S4/ECC端的调用

S4/ECC端调用CPI详见链接

无峰,公众号:ABAP 技巧与实战CPI系列 通用接口-数据写入FTP服务器csv文件

需补充token的存储及有效token的使用逻辑

总结

通过rest方式 传输json报文可以让系统设计一个通用接口, 通过报文的内容识别具体传递的内容及后续处理方式. 

CPI对于这类接口只需要把发出系统的报文透传到目标系统(需要的话,补充token获取或sign获取逻辑, 把相关信息补充到源报文中,再调用目标系统的REST服务).

本文给出了一个CPI通用的处理方式. 其中SIGN签名算法依赖于目标系统给出的逻辑. 其它部分比较通用.

groovy 脚本在CPI中可以比较方便的处理传递的消息.

groovy脚本中通过对message 的抬头,属性及body 的处理,可以改变源系统传递的报文内容.

groovy脚本中通过message 的属性,可以在各脚本间传递变量内容

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号