Gateway网关分布式微服务认证鉴权

文章目录

学习链接

实战干货!Spring Cloud Gateway 整合 OAuth2.0 实现分布式统一认证授权!

spring-cloud-gateway-oauth2的github代码地址 - 已克隆到gitee

微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权!

WebFlux粗体验(异步Servlet)

SpringBoot WebFlux集成WebFluxSecurity做登录权限验证

OAuth2授权流程和源码解析 - 有道笔记

【001】webflux 源码解析 - 启动、执行流程

尚硅谷SpringBoot响应式编程教程 - 视频

微服务认证方案

微服务认证方案目前有很多种,每个企业也是大不相同,但是总体分为两类,如下:

  • 网关只负责转发请求,认证鉴权交给每个微服务控制

  • 统一在网关层面认证鉴权,微服务只负责业务

    • 网关自定义网关(全局)过滤器作权限校验

    • 搭建1个认证中心(里面继续使用原来的security oauth2,不是webflux的),网关整合security作权限校验(但是注意这里的实现是webflux,底层用的是netty,而不是传统的tomcat容器了,因此写法上有比较大的区别,需要对webflux有一定了解。最关键的是注意配置的2个过滤器:AuthenticationWebFilter-管认证的 和 AuthorizationWebFilter-管授权的,顺序定义在SecurityWebFiltersOrder中),当security对用户身份处理后,用户权限通过之后(注意:即使认证不通过,权限也可以通过,关键是看权限是否允许,可类比原来的security来理解),再会交给网关过滤器处理(此时如果可以解析到用户身份的话,可以将用户身份添加到请求头中),然后经过网关路由转发给对应的微服务。

先来说说第一种方案,有着很大的弊端,如下:

  • 代码耦合严重,每个微服务都要维护一套认证鉴权

  • 无法做到统一认证鉴权,开发难度太大

  • (之前有使用过这种实现,定义个公共认证模块的jar包,各个微服务引入这个jar包,jar包中引入了security,开启全局校验,各个微服务可以使用注解,各个微服务可以覆盖jar包中的关键配置类实现。但是,后来遇到微服务之间互相调用时也得把这个令牌给带上去以供被调用的微服务作权限校验的问题,这样就导致权限校验管理混乱。所以还不如直接在网关层作校验,然后校验通过后,将用户身份权限写成请求头,在网关转发的时候携带给下面的微服务,后面微服务如果有必要作权限校验的话,可以使用AOP自主实现校验逻辑)

第二种方案明显是比较简单的一种,优点如下:

  • 实现了统一的认证鉴权,微服务只需要各司其职,专注于自身的业务

  • 代码耦合性低,方便后续的扩展

相关推荐
AOwhisky1 天前
Ceph系列第五期:Ceph 对象存储(RADOS Gateway)精讲
linux·运维·笔记·ceph·gateway·对象存储
西凉的悲伤2 天前
Spring Cloud Gateway介绍
java·spring cloud·gateway
苏渡苇3 天前
Spring Cloud Gateway 网关限流
spring cloud·gateway·springboot·网关限流
一个儒雅随和的男子4 天前
Spring cloud组件gateway网关详细剖析
spring·spring cloud·gateway
超梦dasgg4 天前
Gateway 鉴权场景:网关统一鉴权 + 业务应用决定放行规则
java·gateway
木雷坞4 天前
AI Gateway 接入大模型服务后首 token 慢排查:镜像、模型缓存和 GPU 节点
人工智能·缓存·gateway
明夜之约5 天前
Spring Cloud Gateway 深度解析:从路由原理到生产级网关实战
java·spring·spring cloud·gateway
tyler_download6 天前
深入深出openclaw:gateway 服务进程的启动逻辑
gateway
Upsy-Daisy6 天前
OpenClaw 源码解析(七):Gateway 控制平面与 WebSocket RPC 机制
websocket·平面·gateway
香菜烤面包6 天前
SGLang Model Gateway 核心功能解析
gateway