公司业务扩展需要,需对外提供接口给其他第三方系统使用。很多人说是系统并不安全,缺乏安全考虑。所以抽出时间思考整理了一番

采用认证 + 签名验证的方式来进行传输

认证 : (认证方式为: Oauth2) 其他外部系统调用垂直系统接口需通过垂直系统提供的指定账号密码进行登录,获取秘钥。

Authorization:Bearer y3XWtwWaxqCEBDoE-qzZk0bCp3UKO920

签名验证 满足第一步条件,方可进行签名验证。

签名所需参数:

  • 秘钥(垂直系统提供)
  • token (令牌 登录可获取)
  • timestamp (时间戳)
  • 以及其他参数
  • sign 签名

签名生成步骤:

第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则:

参数名 ASCII 码从小到大排序(字典序);

如果参数的值为空不参与签名;

参数名区分大小写;

验证调用返回或微信主动通知签名时,传送的 sign 参数不参与签名,将生成的签名与该sign值作校验。

第二步,在stringA最后拼接上 key 得到 stringSignTemp 字符串,并对 stringSignTemp进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到 sign 值 signValue。 签名算法与微信一致。上方一些内容来自微信开发文档

IP白名单,第三方需要联调需提供外网机器IP地址 说了这么多,本身也不确定此方案可不可行,但是应该也差不多吧。另外对于特别铭感信息.需采用 HTTPS 协议进行传输

具体实现就是接下来的问题了,下一章节,(采用 Yii2.0)进行详细描述。

如果有其他方案,或者有直接上手可用的轮子,还希望留言。在下不胜感激。

关于极客返利

极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。

https://geekfl.com

https://geek.laravelcode.cn

版权许可

本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

转载无需与我联系,但须注明出处,注明文章来源 接口开发安全问题

联系我

编程怪事
暂无回复
0 / 180