我是靠谱客的博主 贪玩马里奥,最近开发中收集的这篇文章主要介绍api网关设计 1.什么是API网关?2.API网关 与普通Http接口实现流程对比3.网关实现流程与技术 4.接口安全的业务需求 5.基于API网关实现安全机制自己实现的简单流程代码地址:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
为什么80%的码农都做不了架构师?>>>
1.什么是API网关?
API网关是一个轻量的java http 接口组件,可无缝将普通的 Serive 方法转换成 http 接口。并从已下几点来达到提高开发效率与接口质量的目的。
- 去掉mvc控制器,将http请求直接无缝接入JAVA服务接口
- 统一出入参格式
- 统一异常规范
- 自动检测服务接口规范
2.API网关 与普通Http接口实现流程对比
2.1 普通Http 接口实现
2.2 API网关接口实现
3.网关实现流程与技术
请求参数说明:
名称 | 类型 | 描述 |
method | string | 方法名称 |
params | json | 业务参数 |
timestamp | long | 请求时间戳 |
实现技术:
- java servlet
- spring Ioc
- Json 转换工具的使用
4.接口安全的业务需求
4.1 接口安全级别分组
- 白名单组(首页等)
- 黑名单组(购物车,订单等)
- 黑白名单组(可以有userid也可以没有userid但是显示效果不一致)
4.2 基于Token安全机制认证需求
- 登陆鉴权
- 防止业务参数串改
- 保护用户敏感信息
- 防签名伪造
4.3 Token 认证机制整体架构
整体架构分为Token生成与认证两部分:
- Token生成指在登陆成功之后生成 Token 和密钥,并其与用户隐私信息、客户端信息一起存储至Token表,同时返回Token 与Secret 至客户端。
- Token认证指客户端请求黑名单接口时,认证中心基于Token生成签名
4.3.1 Token表结构说明:
名称 | 类别 | 说明 | 约束 |
id | number | id主键 | 主键,自增长 |
memberId | number | 会员ID | |
accessToken | varchar(50) | Token | 索引 |
secret | varchar(50) | 密钥 | |
createdTime | datetime | 创建时间 | |
expiresTime | datetime | 有效期至 | |
clientIp | varchar(50) | 客户端IP | |
clientType | varchar(50) | 客户端类别 | |
eCode | varchar(50) | 设备标识 | |
uCode | varchar(50) | 设备用户标识 |
4.3.2 业务请求具体参数:
名称 | 类型 | 描述 |
method | string | 方法名称 |
params | json | 业务参数 |
token | string | token值 |
sign | string | 签名规则:md5(secret+method+params+token+timestamp+secret) |
timestamp | long | 请求时间搓,允许与服务端10分钟误差 |
签名规则:
- 已指定顺序拼接字符串 secret+method+params+token+timestamp+secret
- 使用MD5进行加密,在转化成大写
签名的目的:
- 防串改
- 防伪造
- 防重复使用签名
服务端签名验证的具体流程:
5.基于API网关实现安全机制
5.1 签名认证与API网关的整体认证流程
自己实现的简单流程代码地址:
https://gitee.com/itmyx/apitest (基于springboot实现)
转载于:https://my.oschina.net/muyuxi/blog/1609477
最后
以上就是贪玩马里奥为你收集整理的api网关设计 1.什么是API网关?2.API网关 与普通Http接口实现流程对比3.网关实现流程与技术 4.接口安全的业务需求 5.基于API网关实现安全机制自己实现的简单流程代码地址:的全部内容,希望文章能够帮你解决api网关设计 1.什么是API网关?2.API网关 与普通Http接口实现流程对比3.网关实现流程与技术 4.接口安全的业务需求 5.基于API网关实现安全机制自己实现的简单流程代码地址:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复