api网关设计

 

1.什么是API网关?

    API网关是一个轻量的java http 接口组件,可无缝将普通的 Serive 方法转换成 http 接口。并从已下几点来达到提高开发效率与接口质量的目的。

  1. 去掉mvc控制器,将http请求直接无缝接入JAVA服务接口
  2. 统一出入参格式
  3. 统一异常规范
  4. 自动检测服务接口规范

2.API网关 与普通Http接口实现流程对比

2.1 普通Http 接口实现

2.2 API网关接口实现

3.网关实现流程与技术

请求参数说明:

名称类型描述
methodstring方法名称
paramsjson业务参数
timestamplong请求时间戳


 实现技术:

  1. java servlet
  2. spring Ioc
  3. Json 转换工具的使用

 

4.接口安全的业务需求

 

 4.1 接口安全级别分组

  1. 白名单组(首页等)
  2. 黑名单组(购物车,订单等)
  3. 黑白名单组(可以有userid也可以没有userid但是显示效果不一致)

 

4.2 基于Token安全机制认证需求

  1. 登陆鉴权
  2. 防止业务参数串改
  3. 保护用户敏感信息
  4. 防签名伪造

 

4.3 Token 认证机制整体架构

整体架构分为Token生成与认证两部分:

  1. Token生成指在登陆成功之后生成 Token 和密钥,并其与用户隐私信息、客户端信息一起存储至Token表,同时返回Token 与Secret 至客户端。
  2. Token认证指客户端请求黑名单接口时,认证中心基于Token生成签名

4.3.1 Token表结构说明:

名称类别说明约束
idnumberid主键主键,自增长
memberIdnumber会员ID 
accessTokenvarchar(50)Token索引
secretvarchar(50)密钥 
createdTimedatetime创建时间 
expiresTimedatetime有效期至 
clientIpvarchar(50)客户端IP 
clientTypevarchar(50)客户端类别 
eCodevarchar(50)设备标识 
uCodevarchar(50)设备用户标识 

4.3.2 业务请求具体参数:

名称类型描述
methodstring方法名称
paramsjson业务参数
tokenstringtoken值
signstring签名规则:md5(secret+method+params+token+timestamp+secret)
timestamplong请求时间搓,允许与服务端10分钟误差

签名规则:

  1. 已指定顺序拼接字符串 secret+method+params+token+timestamp+secret
  2. 使用MD5进行加密,在转化成大写

签名的目的:

  1. 防串改
  2. 防伪造 
  3. 防重复使用签名

服务端签名验证的具体流程:

 

5.基于API网关实现安全机制

5.1 签名认证与API网关的整体认证流程

 

自己实现的简单流程代码地址:

https://gitee.com/itmyx/apitest (基于springboot实现)

 

转载于:https://my.oschina.net/muyuxi/blog/1609477

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值