SpringCloud:搭建基于Gateway的微服务网关(一)
1.需求
最近在尝试着写一个开放平台,于是先搭建网关。
作用:统一的请求入口,完成对请求的跟踪,限流(未做),鉴权,分发,封装响应
2.工作原理
2.1.请求
在开放平台中申请对接口的使用,申请通过后会获得:AccessId/SecretKey
API网关(服务访问的地址):127.0.0.1:7000
请求path(业务接口的路径):/v1/article/.......
将请求内容拼装为String(格式为统一格式)
String stringToSign=
HTTP-Verb + "\n" + //请求的方法
Content-MD5 + "\n" //参数的MD5
Content-Type + "\n" + //请求的参数类型
Timestamp + "\n" + //请求的时间戳
Headers + Url_String //请求头以及请求路径
然后通过SecretKey对stringToSign进行加密,得到签名串:sign
将AccessId:sign放入请求头,作为鉴权的依据 : Authorization: gateway:{AccessId}:{Signature}
发送请求
2.2.网关拦截
网关拦截该次请求,获取鉴权信息,得到AccessId依据加密后的签名串sign
从request中获取请求信息(请求的方法,参数类型,时间戳,请求路径等。。),重新组装 stringToSign
将AccessId,sign,stringToSign,url(请求的path),method(请求的方法)作为参数,调用鉴权接口进行校验
2.3.鉴权
通过AccessId,查数据库,获取SecretKey,以及用户信息等
使用获取的SecretKey对stringToSign进行加密,得到签名串,对比原始签名串,是否匹配,匹配则请求合法
其他校验:对用户信息进行校验,用户是否可用、对AccessId使用超期进行判断等
通过url以及method获取API信息(主要是获取其服务名)
返回鉴权结果
2.4.服务分发
对鉴权结果进行判断,合法则进行服务分发,将请求转发到对应服务上
获取响应结果
2.5.封装响应
对响应结果进行处理,统一封装为网关返回数据
SpringCloud:搭建基于Gateway的微服务网关(一)的更多相关文章
- SpringCloud:搭建基于Gateway的微服务网关(二)
0.代码 https://github.com/fengdaizang/OpenAPI 1.引入相关依赖 pom文件如下: <?xml version="1.0" encod ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建
笔记 6.Zuul微服务网关集群搭建 简介:微服务网关Zull集群搭建 1.nginx+lvs+keepalive https://www.cnblogs.com/liuyisai/ ...
- 《springcloud 二》SrpingCloud Zuul 微服务网关搭建
网关作用 网关的作用,可以实现负载均衡.路由转发.日志.权限控制.监控等. 网关与过滤器区别 网关是拦截所有服务器请求进行控制 过滤器拦截某单个服务器请求进行控制 Nginx与Zuul的区别 Ngin ...
- 基于SpringBoot-Dubbo的微服务快速开发框架
简介: 基于Dubbo的分布式/微服务基础框架,为前端提供脚手架开发服务,结合前一篇--Web AP快速开发基础框架,可快速上手基于Dubbo的分布式服务开发,项目代码: https://github ...
- SpringCloud Gateway微服务网关实战与源码分析-上
概述 定义 Spring Cloud Gateway 官网地址 https://spring.io/projects/spring-cloud-gateway/ 最新版本3.1.3 Spring Cl ...
- springcloud(十四):搭建Zuul微服务网关
springcloud(十四):搭建Zuul微服务网关 1. 2. 3. 4.
- 使用 Node.js 搭建微服务网关
目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...
- 微服务网关 Spring Cloud Gateway
1. 为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...
- 微服务网关实战——Spring Cloud Gateway
导读 作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用.本文对Spring Clou ...
随机推荐
- vue 鼠标右击事件
使用@contextmenu.prevent即可 参考:https://www.cnblogs.com/sxz2008/p/6953082.html
- jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jquery筛选方法
jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jq ...
- Fedora 31 Beta 发布
Matthew Miller宣布发布Fedora 31 Beta.它不仅准时,而且还带来许多激动人心的更新.Fedora 31 Beta附带全新的GNOME 3.34桌面及其许多改进/功能,这对于更好 ...
- 【转载】C#的DataTable类Clone及Copy方法的区别
在C#中的Datatable类中,Clone方法和Copy方法都可以用来复制当前的DataTable对象,但DataTable类中的Clone方法和Copy方法还是有区别的,Clone方法只复制结构信 ...
- 下载安装Tomcat教程
注:由于我的笔记不知怎么滴不能复制粘贴我就直接贴图了
- 英语orientaljasper鸡血石orientaljasper单词
鸡血石(orientaljasper),是辰砂条带的地开石,因鲜红色似鸡血的辰砂(朱砂)而得名.鸡血石含有辰砂(朱砂).石英.玉髓35%-45%.磁铁矿.赤铁矿6%-12%.辰砂约5%-8%. 鸡血石 ...
- APS系统如何让企业实现“多赢”?看高博通信是怎么做的
高博通信(上海)有限公司凭籍在超精密产业中的技术积累, 强大的资金优势以及与一流大学的联合,使得其正成为国内超精密电子制造行业的领导者. 雄厚的技术实力和专业的团队赢得了波音,空客公司等国际航空器制造 ...
- Golang: 常用的文件读写操作
Go 语言提供了很多文件操作的支持,在不同场景下,有对应的处理方式,今天就来系统地梳理一下,几种常用的文件读写的形式. 一.读取文件内容 1.按字节读取文件 这种方式是以字节为单位来读取,相对底层一些 ...
- 【转】学习ARM为什么首选IMAX6??
ARM作为目前嵌入式行业主流的架构,已经让越来越多从事电子行业的朋友了解,并且高校对于嵌入式的学习,很多直接从ARM开始,目前ARM的嵌入式培训也越来越多,足以说明现在嵌入式行业有多火.目前主流的AR ...
- lua redis接口 (在ubuntu16.04 环境下配置lua-redis开发环境)
目前成功的lua版本是5.1, 根据网络上的资料显示 lua5.1能够支持 lua-socket 安装lua及相关软件: #安装lua5. #安装lua-socketxiangg sudo apt i ...