开放API网关的实践

随着业务发展,系统索要对接的第三方会越来越多,那么如何让第三方快速安全的接入,就会成为各业务系统面临的问题。设计一个具备鉴权、限流、熔断等功能的API网关就显得至关重要,本文的文章目录如下。

API网关作用

在之前的文章中提到,API网关的作用,它相当于在业务系统中充当了一个屏障,或者说是门面的作用。对于系统的安全性等都非常重要。

总体设计

鉴权、验签等功能是通过责任链的方式进行处理,网关会根据配置进行路由,具体处理流程为:
在这里插入图片描述

1.基础网关的设计

网关会根据配置中的路由规则将请求进行转发。如将 /order/* 的请求转发给内部的订单系统/user/* 的请求转发给内部的用户系统, 这种做法常用于对整个业务系统负责的基础网关.

2.服务第三方的开放API网关设计

该种网关会讲请求资源作为参数当道请求体中。主要出于以下原因:

  1. 开放API服务于第三方, 屏蔽内部路径, 有利于提供命名统一且规范的接口.
  2. 请求接口的映射由网关的路由表维护, 内部接口升级甚至切换到新服务对外接口不变.
  3. 能够更细粒度地针对接口进行权限控制、限流、统计等.

公共请求参数

在这里插入图片描述

● 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网关实践(三) —— 限流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建设微服务API网关微服务架构中重要的一环,它可以帮助我们将多个微服务组合成一个整体,提供更好的用户体验和更高的性能。以下是一些实践,可以帮助您建设微服务API网关: 1. 选择一个适合您的API网关:目前市场上有很多不同的API网关,如Kong、Apigee、Zuul等。您需要根据您的需求和团队的技术水平选择一个适合您的API网关。 2. 定义API网关的功能:API网关的功能包括路由、负载均衡、安全性、监控和日志记录等。您需要根据您的需求定义API网关的功能,以便您可以选择适合您的API网关。 3. 定义API网关API:您需要定义API网关API,以便您的开发团队可以使用它们。您需要考虑API的版本控制、文档和测试等。 4. 集成微服务:您需要将您的微服务集成到API网关中。您需要考虑微服务的版本控制、文档和测试等。 5. 确保安全性:您需要确保API网关的安全性,包括身份验证和访问控制等。您可以使用OAuth、JWT等技术来实现安全性。 6. 监控和日志记录:您需要监控和日志记录API网关的性能和错误。您可以使用ELK、Prometheus等工具来实现监控和日志记录。 7. 测试和部署:您需要测试和部署API网关。您可以使用CI/CD工具来自动化测试和部署过程。 总之,建设微服务API网关需要您考虑多个方面,如选择适合您的API网关、定义API网关的功能和API、集成微服务、确保安全性、监控和日志记录、测试和部署等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值