1、前言
基本上系统都会涉及与外部系统的交互,不论数据、或者业务上,这就涉及到
SDK
接口开发,假设接口由您来设计并开发,那么如何保证整个流程的对接、安全性又如何保证呢?ok,开始今天的学习。算法
(一)SDK 介绍
SDK
即“软体开发工具包”,通常是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操做系统等创建应用软件的开发工具的集合。通俗点是指由第三方服务商提供的实现软件产品某项功能的工具包。安全
摊牌了,不装了,直接上设计的模拟详细的对接流程图框架
(二)SDK 对接流程图
看完以后,您是否基本上对 SDK
的整个两端流程已经有了大体的了解了呢?工具
2、SDK 接口安全
接口安全,这是 SDK
开发者最担忧的问题了,毕竟 SDK
平台若是是暴露互联网,安全不考虑,平台坐着等着瘫痪吧,做为 SDK
设计及开发者,你们确定会问:学习
- 您的接口安全吗?
- 您的接口数据传输安全,会不会数据泄露?业务数据会不会篡改?
- 您的接口时效性如何保证?
基于以上的灵魂拷问,我们就来好好设计下 SDK
,废话不说往下走。开发工具
- 接口安全采用非对称的加密算法
RSA
进行签名,保证接口的完整性安全。- 接口数据安全采用对称加密算法
AES
对业务数据进行加密,密文传输。- 时效性采用每次请求时间戳保证接口的有效请求。
(一)签名算法
签名流程:
1.对参与AES加密的业务参数数据序列化为JSON字符串,而后对其进行AES加密。获得data参数。
【AES加密模式:CBC 填充:PKCS7 数据块:128位 输出:base64 字符集:UTF-8】
2.而后对非code、msg、sign、可空字段空值之外的全部参数字母ASCII码排序“&”链接,进行RSA签名,获得sign参数。
编码注:data、sign须要url编码后传输。加密
在返回结构的状态属于200时,再进行验签流程。
验签流程:
先对返回结果进行RSA验签,获得AES密文,先根据接口版本号,时间戳验证接口有效性、时效性,再对AES密文进行解密,获得返回明文业务数据JSON字符串。
url注:data、sign须要url解码spa
3、工具
工欲善其事,必先利其器
站在巨人的肩膀上作事。
RSA
公私钥生成工具。- 采用
OpenSsl
工具生成RSA
公私钥。 - 【推荐】蚂蚁金服也基于
OpenSsl
二次封装好的RSA
公私钥生成工具,下载地址:https://docs.open.alipay.com/291/106097/。
- 采用