# 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