# gateway **Repository Path**: weng-zewei/gateway ## Basic Information - **Project Name**: gateway - **Description**: 此仓库主要是springcloud gateway整合webflux反应式编程,解决整合webflux的难点 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-03-12 - **Last Updated**: 2022-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gateway #### 介绍 此仓库主要是springcloud gateway整合webflux反应式编程,解决整合webflux的难点 #### 框架介绍 为什么要将微服务融入安全框架? 安全框架,简单说是对访问权限进行控制,应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。当企业的应用系统逐渐增多后,每个系统单独管理各自的用户数据容易行成信息孤岛,分散的用户管理模式阻碍了企业应用向平台化演进。当企业的互联网业务发展到一定规模,构建统一的标准化账户管理体系将是必不可少的,因为它是企业互联网云平台的重要基础设施,能够为平台带来统一的帐号管理、身份认证、用户授权等基础能力,为企业带来诸如跨系统单点登录、第三方授权登录等基础能力,为构建开放平台和业务生态提供了必要条件。 首先介绍一下当前的安全框架 Apache Shiro 一个强大且易用的Java安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。使用Shiro的 易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 Oauth2 一种安全的授权框架,提供了一套详细的授权机制。用户或应用可以通过公开的或私有的设置,授权第三方应用访问特定资源。它详细描述了系统中不同角色、用户、服务前端应用(比如API),以及客户端(比如网站或移动App)之间怎么实现相互认证。Oauth2定义了一组想当复杂的规范。涉及到:Roles角色、Client Types客户端类型、Client Profile客户端描述、Authorization Grants认证授权、Endpoints终端等。 Sa-Token 一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。使用简单,基本根据文档就能搭建出来 Spring Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。最主要的是它提供了简单的使用方式,同时又有很高的灵活性,简单,灵活,强大 介绍了这么多的安全框架,springGateway整合Spring Security的难点 如果您使用的是zuul进行网关的配置,那么接下来的篇章即可略过 接下来先介绍一下springGateway把,官网是这样说的:Gateway提供了一个库,用于在Spring WebFlux之上构建API网关。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领域的关注点,例如:安全性,监控/指标和弹性。也就是说SpringCloud Gateway是完全基于webFlux的,跟SpringMVC传统方式是不兼容的。 那么webflux又是什么呢 Spring WebFlux 是 Spring Framework 5.0中引入的新的响应式web框架。与Spring MVC不同,它不需要Servlet API,是完全异步且非阻塞的,并且通过Reactor项目实现了Reactive Streams规范。 举个例子 在命令式编程(我们的日常编程模式)下,式子a=b+c,这就意味着a的值是由b和c计算出来的。如果b或者c后续有变化,不会影响到a的值 在响应式编程下,式子a:=b+c,这就意味着a的值是由b和c计算出来的。但如果b或者c的值后续有变化,会影响到a的值 展望场景:社交平台,朋友的动态、点赞和留言不是手动刷出来的,而是当后台数据变化的时候自动体现到界面上的。 回归正题:大多数人根据网上使用@EnableWebSecurity对Spring Security进行了配置,表现是:编译正常、运行无错误,但是不起作用。 强烈声明:它不起任何作用,请不要使用这种方式进行整合,使用这种传统SpringMVC方式的代码不起作用,因为gateWay是基于WebFlux的 **@EnableWebFluxSecurity是关键注解** 参考链接 https://blog.csdn.net/weixin_42509548/article/details/114603703 https://www.jianshu.com/p/1870f456b334 https://www.jianshu.com/p/2571f6a4e192