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的微服务网关(一)的更多相关文章

  1. SpringCloud:搭建基于Gateway的微服务网关(二)

    0.代码 https://github.com/fengdaizang/OpenAPI 1.引入相关依赖 pom文件如下: <?xml version="1.0" encod ...

  2. 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建

    笔记 6.Zuul微服务网关集群搭建     简介:微服务网关Zull集群搭建 1.nginx+lvs+keepalive      https://www.cnblogs.com/liuyisai/ ...

  3. 《springcloud 二》SrpingCloud Zuul 微服务网关搭建

    网关作用 网关的作用,可以实现负载均衡.路由转发.日志.权限控制.监控等. 网关与过滤器区别 网关是拦截所有服务器请求进行控制 过滤器拦截某单个服务器请求进行控制 Nginx与Zuul的区别 Ngin ...

  4. 基于SpringBoot-Dubbo的微服务快速开发框架

    简介: 基于Dubbo的分布式/微服务基础框架,为前端提供脚手架开发服务,结合前一篇--Web AP快速开发基础框架,可快速上手基于Dubbo的分布式服务开发,项目代码: https://github ...

  5. SpringCloud Gateway微服务网关实战与源码分析-上

    概述 定义 Spring Cloud Gateway 官网地址 https://spring.io/projects/spring-cloud-gateway/ 最新版本3.1.3 Spring Cl ...

  6. springcloud(十四):搭建Zuul微服务网关

    springcloud(十四):搭建Zuul微服务网关 1. 2. 3. 4.

  7. 使用 Node.js 搭建微服务网关

    目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...

  8. 微服务网关 Spring Cloud Gateway

    1.  为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...

  9. 微服务网关实战——Spring Cloud Gateway

    导读 作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用.本文对Spring Clou ...

随机推荐

  1. Unity AsyncGPUReadback 接口测试

    Unity2018新加入了该接口,可以做到异步RenderTexture->像素数据和异步的ComputeBuffer.GetData 那么写了几个例子来测试下. 1.RenderTexture ...

  2. 老大难的GC原理及调优,这下全说清楚了

    概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉 ...

  3. pythonic-迭代器函数-itertools

    认识 Python 的itertools模块提供了很多节省内存的高效迭代器, 尤其解决了一些关于数据量太大而导致内存溢出(outofmemory)的场景. 我们平时用的循环绝大多数是这样的. # wh ...

  4. LaTeX的安装并使其能够编译中文

    首先,感谢博客园团队帮我找回这篇被我误删除的博客.找回方法:发送邮件至"contact@cnblogs.com",然后就可以在工作人员的帮助下找回了.下面介绍LaTeX的安装并使其 ...

  5. Java SpringBoot 手记

    SpringBoot Git:https://github.com/spring-projects/spring-boot Maven (mvn)环境配置: 下载地址:http://maven.apa ...

  6. zabbix--邮件告警报错“Support for SMTP authentication was not compiled in”

    zabbix 邮件告警报错“Support for SMTP authentication was not compiled in” 邮件报警失败:Support for SMTP authentic ...

  7. kuangbin专题专题四 MPI Maelstrom POJ - 1502

    题目链接:https://vjudge.net/problem/POJ-1502 dijkstra板子题,题目提供下三角情况,不包含正对角线,因为有题意都为0,处理好输入,就是一个很水的题. #inc ...

  8. dfs 正则表达式

    192. 通配符匹配 中文 English 判断两个可能包含通配符“?”和“*”的字符串是否匹配.匹配规则如下: '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个串完 ...

  9. 利用反射与dom4j读取javabean生成对应XML

    项目中需要自定义生成一个xml,要把Javabean中的属性拼接一个xml,例如要生成以下xml <?xml version="1.0" encoding="gb2 ...

  10. wordpress不同分类调用不同的模板

    今天网友问ytkah:wordpress不同分类如何调用不同的模板.我们知道in_category() 函数可以通过分类别名或ID判断当前文章所属的分类,而且可以直接在循环(Loop)内部和外部使用. ...