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

Tips



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 不支持短密码。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容