# g2rain-gateway-webmvc(企业级 API 网关)
g2rain-gateway-webmvc 是基于 Spring Cloud Gateway(WebMVC 版本) 的企业级 API 网关,为 G2rain SaaS 平台提供统一的路由转发、身份认证、安全防护以及流量管理能力。
# 核心特性
# 动态路由管理
- 数据库驱动路由:支持从数据库动态加载路由配置
- 内存缓存优化:路由信息缓存到内存,提升查找性能
- 运行时刷新:支持动态刷新路由配置,无需重启服务
- 负载均衡:集成
Spring Cloud LoadBalancer,支持多种负载均衡策略 - 服务发现:集成 Nacos,自动路由到可用服务实例
# 多层认证体系
- JWT Token 认证:标准 JWT 校验
- DPoP Proof 认证:实现 DPoP(Proof-of-Possession)增强安全认证
- 双重认证机制:JWT + DPoP 双重验证
- 认证服务集成:与
g2rain-iam深度集成 - 鉴权上下文管理:构建
EdgePrincipalContext
# 完整过滤器链
- 请求体缓存:
CachedBodyFilter(请求体可重复读取) - 身份转发:
PrincipalForwardFilter(身份信息转发到下游服务) - 日志记录:
TraceLoggingFilter(记录请求响应日志) - 签名验证:
SignVerificationFilter(请求签名确保完整性) - 响应调整:
ResponseAdjustFilter(统一响应格式) - 过滤器按优先级有序执行,形成稳定的治理链路
# 安全防护与白名单
- 支持全局与过滤器级别白名单配置
- 路径匹配支持上下文路径、精确路径、模式路径
- 自动移除敏感认证头(保护 Token 和 DPoP 信息)
- DPoP JTI 防重放,降低重放攻击风险
# 统一异常处理
GlobalErrorHandler统一捕获网关异常- 返回标准化
Result响应格式 GatewayException进行网关业务异常管理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
# 白名单配置(示例片段)
gateway-white-list:
global:
pattern-paths:
- /v2/api-docs
- /actuator/**
filters:
gateway-token-auth-filter:
context-paths:
- /auth
- /public
sign-verification-filter:
context-paths:
- /webhook