基于 Springboot 的 API 转发服务

  • 1 系统介绍
  • 1.1 系统组成
  • 1.2 系统示意图
  • 1.3 常见部署架构
  • 1.4 使用场景
  • 2 系统优势
  • 3 可靠性


项目地址:Orainge/API-Service

1 系统介绍

本系统为基于 Springboot 的带加密功能的简易 API 转发服务,能够解决在数据传输过程中存在的信息泄露风险,提高数据传输的安全性。

1.1 系统组成

该系统包含以下两个部分:

  • 接收端:负责接收客户主机的API调用请求,并将请求结果返回给客户主机。客户主机与接收端之间的数据交换是明文的,因此需确保接收端部署到可信的服务器上。
  • 转发端:负责转发请求,并将请求结果返回给接收端。转发端只接收可信接收端发来的转发请求,其它转发请求则会被拒绝。

注:在以下说明中,接收端和转发端统称为”节点 (Node)“。

1.2 系统示意图

接收端与转发端是多对多的关系,即一个接收端可以将请求转发给多个转发端,一个转发端可以接收多个接收端的转发请求。

spring boot 转发到static 下的html springboot接口转发_java

1.3 常见部署架构

通常情况下,该系统可以加密请求的数据,使数据能在公网环境中安全穿过。

spring boot 转发到static 下的html springboot接口转发_java_02

1.4 使用场景

  • 客户端发送请求到服务端时,请求数据包和响应数据包需要进行加密,防止别人截取时被解密。
  • 不能修改客户端,需要无感知替换服务端。
  • 该系统可自由配置,在变更配置时仅需修改配置文件,无需修改代码。

2 系统优势

  • 使用反向代理:对于客户计算机发起的请求,转发端会将该请求原封不动地发送给转发端,让转发端进行请求,并将请求结果返回给接收端,这样就保证客户端在请求时感知不到请求端和转发端的存在,实现无缝替换。
  • 配置统一管理:所有转发的配置只在转发端进行配置,接收端只需要填写对应转发端的ID和预共享密钥即可接收转发请求,方便对转发端进行二次开发(例如API管理系统、集群管理等)。
  • 节点数据交换基于 HTTP 请求:节点之间的数据交换基于HTTP请求,意味着无需为了配置该系统专门的系统进程管理,只需在服务器上启动节点后,附加在 Nginx 上即可使用,方便配置。

3 可靠性

该系统的数据交换可靠性由两部分组成:

  • 节点需授权连接:转发端接收到接收端的转发请求时,会验证请求头中的授权信息是否正确。在本系统中,使用了HOTP(HMAC-based One-Time Password,表示基于HMAC算法加密的一次性密码)的验证方式,使用预共享密钥+动态时间的方式生成动态验证码,该验证码只在请求产生后的10秒钟内有效,即使有人截获请求包,也无法伪造接收端的请求让转发端转发,有效预防了重放攻击。
  • 节点请求内容进行加密传输:节点之间传递信息时,会使用对应转发端的预共享密钥进行加密,确保只有对应的接收端才能解密密文,防止数据被截获后内容被破译。

spring boot 转发到static 下的html springboot接口转发_API_03


spring boot 转发到static 下的html springboot接口转发_API_04