微服务网关跨域(微服务只能通过网关访问)

网友投稿 615 2023-01-11


本篇文章给大家谈谈微服务网关跨域,以及微服务只能通过网关访问对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享微服务网关跨域的知识,其中也会对微服务只能通过网关访问进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

微服务架构 | 服务之间跨域问题怎么解决?

当前微服务拆分已经成为趋势微服务网关跨域,大部分公司都对其软件产品做微服务架构调整。对产品先进行业务、模块拆分,大部分也进行前后端分离的业务调整。

服务拆分不能避免的问题那就是微服务网关跨域:请求跨域问题,针对跨域问题,先前专门做了资料整理

针对这些问题可以查看 《SpringCloud 中跨域资源共享(cors)到底解决了什么微服务网关跨域?》

还有解决跨域问题开启跨域资源共享(cors)后。

针对这系列问题可查看 《微服务开启跨域资源共享(cors)后,真的会被攻击么微服务网关跨域?》

阅读CorsConfiguration源码可以发现在CORS 配置中定义

基础CorsConfiguration的定义可自定义跨域配置信息CorsConfig 实现 CorsConfigurationSource

注意在配置时候引用注解@ConfigurationProperties为什么这里使用单一注解并没有直接注入到Bean容器中?针对这问题的分析可阅读 《@
EnableConfigurationProperties 的工作原理》

配置信息CorsConfig基础信息后实现getCorsConfiguration方法

定义Web线程拦截器为了,用于统一处理线程变量!同一个服务肯定不会出现跨域问题。只有不同服务之间调用才会出现此类问题。记得先前在分析 《怎样在输出日志中加入traceId 进行链路追踪》 和 《如何保证各个微服务之间调用的安全性?****》 对个服务之间RPC调用请求线程变量传递问题。

本文主要微服务之间跨域问题的解决方案,至于为什么会存在跨域问题和跨域问题开启后会有哪些攻击模式

在上几篇文章中已逐步分析,解决微服务跨域问题主要分三步走

spring cloud gateway的作用(面试)

网关是整个微服务API请求微服务网关跨域的入口,负责拦截所有请求,分发到服务上去。可以实现日志拦截、权限控制、解决跨域问题、限流、熔断、负载均衡,隐藏服务端的ip,黑名单与白名单拦截、授权等,常用的网关有zuul(netflix的,但是已经停更了)和spring cloud gateway (springcloudalibaba)。这里主要讲springcloud gateway,springcloud gateway是一个全新的项目,其基于spring5.0 以及springboot2.0和项目Reactor等技术开发的网关,其主要的目的是为微服务架构提供一种简单有效的API路由管理方式.

过滤器微服务网关跨域:对单个服务器的请求进行拦截控制

网关:对所有的服务器的请求进行拦截控制

zuul:是Netflix的,是基于servlet实现的,阻塞式的api,不支持长连接。

gateway:是springcloud自己研制的微服务网关,是基于Spring5构建,能够实现响应式非阻塞式的Api,支持长连接

相同点:都是可以实现对api接口的拦截,负载均衡、反向代理、请求过滤等,可以实现和网关一样的效果。

不同点:Nginx采用C语言编写,Gateway属于Java语言编写的, 能够更好让我们使用java语言来实现对请求的处理。

Nginx 属于服务器端负载均衡器。

Gateway 属于本地负载均衡器。 

路由 : 网关的基本模块,有ID,目标URI,一组断言和一组过滤器组成

断言:就是访问该旅游的访问规则,可以用来匹配来自http请求的任何内容,例如headers或者参数

过滤器:这个就是我们平时说的过滤器,用来过滤一些请求的,gateway有自己默认的过滤器,具体请参考官网,我们也可以自定义过滤器,但是要实现两个接口,ordered和globalfilter
a. 客户端发送请求,会到达网关的DispatcherHandler处理,匹配到RoutePredicateHandlerMapping。

b. 根据RoutePredicateHandlerMapping匹配到具体的路由策略。

c. FilteringWebHandler获取的路由的GatewayFilter数组,创建 GatewayFilterChain 处理过滤请求

d. 执行我们的代理业务逻辑访问。

vue3.0 微应用数据请求跨域配置

当前存在以vue2.6 开发微服务网关跨域的单例应用, 我们希望使用 qiankun ,将该应用转微应用结构。

在保证原功能可用微服务网关跨域的情况下,使用vue3.0重构部分功能。

这里记录使用vue做微应用开发时,各个应用数据请求代理微服务网关跨域的配置方式.

我们知道一般,独立使用vue开发单例应用,可以通过配置 vue.config.js 的 { devServer: proxy } 实现接口请求代理.

而在微应用开发中,情况稍有不同。 具体的可以分为以下几种情况:

现在的问题是,当基座和子应用各自独立配置代理服务时,各自独立开发请求数据是正常的。

而子应用加载到基座后,子应用的数据请求将为 404 。

基座版本 vue2.6.12 ,

初看这里微应用中的代理配置和单例配置没有任何区别.其实代理的配置基础都是基于vue.config.js配置或者说是 webpack代理配置, 之所以 这里子应用无论独立开发或加载到基座联调,都能正常请求到数据,是因为基座和子应用都配置了相同的代理头 /proxyApi 并且请求的服务地址一致

这里回到问题, 如果基座和子应用独立配置, 例如:

子应用独立开发时的请求地址: /user

当子应用嵌套在基座内时,地址将变为: localhost: 9000/user

可以看到请求地址发生了变换,原 /user 地址在独立开发时是能通过webpack server 做正常代理的.

而在微服务中, /user 地址转向了基座的本地开发服务 localhost:9000/user 而开发服务是无法识别这个请求地址的,自然返回 404

所以我们将子应用的代理头与基座同步, 这样子应用的请求将通过基座的开发服务做代理转发, 之所以设置相同的代理头而不是在基座再配置一遍子应该代理,也是为了方便设置,遵循 约定大于配置 原则。

之前的方法请求的baseurl 都为先对请求地址, 其实我们也可以直接设置完整的请求地址。

例如:axios.create({ baseURL: ' https://www.api-service.com' })

这样子应用的请求地址将不会被改写, 也就不会出现 404 的情况。

微服务网关层

API网关是所有客户端的统一入口。路由服务可以被用于很多目的,例如日志、限流、认证,从而做到应用无感知。API网关对于任意一种处理请求有两种方式处理。一部分请求只要简单路由到相应的服务;还有一些请求需要拆分到多个服务。API Gateway是实现微服务重要的组件之一,常用的网关Zuul, Nginx, Spring Cloud, Linkerd,Envoy,UnderTow。

微服务网关跨域了评估API网关各自的性能,我们使用Apache的ab作为压测工具。(另外还可以用Gatling做性能测试)

测试结果和心得如下:

微服务方式实现双重网关

最近在做一个多项目整合微服务网关跨域的工作,因为每个项目都有自己的一套网关,每个网关都有自己的加解密算法,整合到一起要求对外提供统一的用户鉴权,而且不对原有系统做大规模的重构,基于这些现实考虑使用两重API网关架构来构建新系统的统一网关体系。

备注微服务网关跨域:其中的统一网关、业务网关、业务微服务都是微服务的模式注册到微服务中心。

这个网关采用zuul来进行网关过滤及路由,其中过滤规则由各个业务网关以微服务方式提供,通过Feign来调用,这个方式也是区别于传统网关的,也是实现双重网关的关键所在。
这里要遵循的基本原则是:授权/鉴权一体化,即授权策略和鉴权方法都是由各个业务网关自己维护,这样就确保微服务网关跨域了功能的封闭性和一致性,在开发和后期维护中都非常的方便高效。

备注:这个类是zuul的主类实现了过滤/路由,其中的鉴权部分调用了相关的微服务,这些微服务以@Autowired的方式注入进来。
接口定义如下:

路由策略通过配置实现,因为是微服务所以直接指定路由到的微服务id即可,配置文件可以存储到微服务治理中心的配置中心。

备注:其中的user-base、user-org分别是两个业务微服务。

这个网关集群按照业务划分,每个网关实现了授权和鉴权的策略算法,并以微服务的方式提供,其中授权是对相关敏感信息做加密并以token的方式存储到cookie中,鉴权是将存储在客户端的token通过相应的解密算法进行核验和鉴权,确保该token的合法性、有效性,只有有效的token才能够通过鉴权并解析出敏感信息传递到指定的路由服务中。

备注:该网关使用JWT进行敏感数据加密

备注:该网关使用RSA进行敏感数据加密
H5业务网关以微服务方式提供了授权/鉴权服务,其中授权服务直接暴露给客户端,客户端调用后将业务类型app_type和授权token写入cookie,鉴权服务暴露给统一网关,对传递的token进行鉴权,鉴权成功后将token中的加密信息解析出来后返回给统一网关,由统一网关路由到业务微服务并将该参数传递下去。

备注:其中register、login是生成授权token流程,readUserinfo是通过token鉴权后访问业务微服务的流程。 关于微服务网关跨域和微服务只能通过网关访问的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 微服务网关跨域的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于微服务只能通过网关访问、微服务网关跨域的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring boot 命令行启动的方式
下一篇:使用Gradle做Java代码质量检查的方法示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~