我是靠谱客的博主 贪玩马里奥,最近开发中收集的这篇文章主要介绍api网关设计 1.什么是API网关?2.API网关 与普通Http接口实现流程对比3.网关实现流程与技术 4.接口安全的业务需求 5.基于API网关实现安全机制自己实现的简单流程代码地址:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

为什么80%的码农都做不了架构师?>>>   hot3.png

 

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

最后

以上就是贪玩马里奥为你收集整理的api网关设计 1.什么是API网关?2.API网关 与普通Http接口实现流程对比3.网关实现流程与技术 4.接口安全的业务需求 5.基于API网关实现安全机制自己实现的简单流程代码地址:的全部内容,希望文章能够帮你解决api网关设计 1.什么是API网关?2.API网关 与普通Http接口实现流程对比3.网关实现流程与技术 4.接口安全的业务需求 5.基于API网关实现安全机制自己实现的简单流程代码地址:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部