网站海报是怎么做的wordpress速度加快
随着业务发展,系统索要对接的第三方会越来越多,那么如何让第三方快速安全的接入,就会成为各业务系统面临的问题。设计一个具备鉴权、限流、熔断等功能的API网关就显得至关重要,本文的文章目录如下。
文章目录
- API网关作用
 - 总体设计
 - 1.基础网关的设计
 - 2.服务第三方的开放API网关设计
 
- 公共请求参数
 - 公共返回参数
 - 签名方案
 - 数据库方案
 
API网关作用
在之前的文章中提到,API网关的作用,它相当于在业务系统中充当了一个屏障,或者说是门面的作用。对于系统的安全性等都非常重要。
总体设计
鉴权、验签等功能是通过责任链的方式进行处理,网关会根据配置进行路由,具体处理流程为:
 
1.基础网关的设计
网关会根据配置中的路由规则将请求进行转发。如将 /order/* 的请求转发给内部的订单系统、/user/* 的请求转发给内部的用户系统, 这种做法常用于对整个业务系统负责的基础网关.
2.服务第三方的开放API网关设计
该种网关会讲请求资源作为参数当道请求体中。主要出于以下原因:
- 开放API服务于第三方, 屏蔽内部路径, 有利于提供命名统一且规范的接口.
 - 请求接口的映射由网关的路由表维护, 内部接口升级甚至切换到新服务对外接口不变.
 - 能够更细粒度地针对接口进行权限控制、限流、统计等.
 
公共请求参数

● app_id: 应用ID, 应用ID是授权的主体, 是调用方的身份标识
 ● method: 请求方法, 与内部URL对应, 由网关的路由表维护.
 ● timestamp和nonce用来防重放攻击.
 ● biz_content: 业务参数, 这个参数将转发给内部业务系统.
公共返回参数

 ● biz_content: 返回业务参数, 网关转发业务系统的返回值.
签名方案
调用方和服务方均生成2048位RSA秘钥, 交换公钥. 私钥用于签名, 公钥用于验签, 开放API网关对外接口使用https, 故暂不需额外做加密处理.
签名算法:
 
数据库方案
数据库存储秘钥权限等相关的配置,E-R图如下:
 
● app: 调用方主体, 用于标识请求方身份.
 ● group: 组, app分组, 可通过group统一进行授权.
 ● subject: 主体(app/group).
 ● resource: 资源, 维护请求资源与内部接口的映射关系, url+http_method 对应唯一的resource_id.
开放API相关的系列文章可以参考掘金文章:
 开放API网关实践(一) ——设计一个API网关
 开放API网关实践(二) —— 重放攻击及防御
 开放API网关实践(三) —— 限流
