spring cloud gateway + oauth2 实现网关统一权限认证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring cloud gateway + oauth2 实现网关统一权限认证相关的知识,希望对你有一定的参考价值。

参考技术A 1. 由于 spring cloud gateway 是基于 WebFlux 框架实现的,该网关作为资源服务器时不能使用 @EnableResourceServer 注解,需要使用 @EnableWebFluxSecurity 注解来配置安全过滤链。

2. 在 springboot 2.2 之前的版本中,安全框架对应的是 spring-security 5.14,该版本只实现了基于 id token (jwk) 的认证,而我当前项目中的认证服务组件是基于 org.springframework.cloud:spring-cloud-starter-oauth2 框架开发,使用的是秘钥签名的 access token,所以网关服务组件需要使用 springboot 2.2 + spring security 5.2 来处理 jws。

3. 现有项目使用了 gradle 构建,是一个多模块的结构,其中主模块引入了 2.1.2.RELEASE 版本的 org.springframework.boot 插件,用来确保各模块中 spring 组件的版本统一,此时子模块是无法通过修改插件版本号或重新引入插件来改变模块中 springboot 的版本,所以网关模块想用要引入 springboot 2.2 的话,就得脱离主模块,或者将插件引入的操作直接下放到各个子模块的构建过程中。

4. org.springframework.cloud:spring-cloud-starter-oauth2 中 org.springframework.security.jwt.crypto.sign.MacSigner 支持使用短密码的 HMACSHA256 签名算法,NimbusReactiveJwtDecoder 不支持短密码。

以上是关于spring cloud gateway + oauth2 实现网关统一权限认证的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud实战Spring Cloud GateWay服务网关

spring cloud gateway 如何工作

Spring Cloud Gateway集成

spring cloud gateway 的执行流程

spring cloud gateway 某些路由中跳过全局过滤器

spring cloud gateway 报错 Unable to find GatewayFilterFactory with name