# g2rain-gateway-webflux(WebFlux 网关)
g2rain-gateway-webflux 是基于 Spring Cloud Gateway / WebFlux 响应式编程模型 构建的企业级 API 网关,为 G2rain SaaS 平台提供统一路由转发、身份认证、安全防护与流量管理能力,适合高并发与非阻塞场景。
# 核心特性
# 动态路由管理
- 数据库驱动路由:支持从数据库动态加载路由配置
- 内存缓存优化:路由信息缓存到内存(提升查找性能)
- 运行时刷新:支持动态刷新路由配置,无需重启服务
- 负载均衡与服务发现:集成
Spring Cloud LoadBalancer,并可通过 Nacos 进行服务注册发现
# 多层认证体系
- JWT Token 认证:标准 JWT 校验
- DPoP Proof 认证:基于 DPoP 的增强安全认证
- 双重认证机制:JWT + DPoP 双重验证
- 认证服务集成:与
g2rain-iam深度集成 - 鉴权上下文管理:构建
EdgePrincipalContext
# 完整过滤器链(典型链路)
CachedBodyFilter:请求体缓存,确保请求体可重复读取GatewayTokenAuthFilter:JWT 认证GatewayDPoPAuthFilter:DPoP 认证PrincipalForwardFilter:身份信息转发到下游服务TraceLoggingFilter:请求响应日志记录SignVerificationFilter:请求签名验证,保证请求完整性ResponseAdjustFilter:统一响应格式调整
# 安全防护机制
- 白名单机制:支持全局与过滤器级别白名单配置
- 路径匹配:支持上下文路径、精确路径、模式路径三种匹配方式
- 敏感信息保护:移除/保护认证头与 DPoP 信息
- 防重放攻击:DPoP 的 JTI 校验
# 统一异常处理
GlobalErrorHandler捕获 WebFlux 异常- 返回统一的
Result响应格式 - 多语言错误消息:
ErrorMessageStorage
# 数据库路由定义与刷新
路由定义表(route_definition)与示例刷新接口:
CREATE TABLE `route_definition` (
`ID` bigint NOT NULL AUTO_INCREMENT,
`UPDATE_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`VERSION` int NOT NULL DEFAULT '0',
`DELETE_FLAG` tinyint NOT NULL DEFAULT '0',
`NAME` varchar(128) NOT NULL,
`ENDPOINT_HOST` varchar(256) NOT NULL,
`ENDPOINT_PATH` varchar(256) DEFAULT NULL,
`CONTEXT` varchar(128) NOT NULL,
`PATH` varchar(256) NOT NULL,
`METHOD` varchar(32) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4 COMMENT='网关路由定义表';
刷新路由(示例):
POST /actuator/gateway/refresh
# 配置文件要点(示例片段)
server:
port: 8081
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
namespace: dev
group: g2rain
service: g2rain-gateway
r2dbc:
url: r2dbc:mysql://localhost:3306/g2rain-system?useSSL=false&serverTimezone=Asia/Shanghai
gateway-white-list:
global:
pattern-paths:
- /v2/api-docs
- /actuator/**
filters:
gateway-token-auth-filter:
context-paths:
- /auth
- /public