Skip to content

Conversation

@tain198127
Copy link

PR: OpenAPI访问控制功能增强 (Issue #9072)

版本号:3.8.3
分支:

issues_9072-->springboot3
我是基于springboot3进行的扩展。

问题描述:

请需要增加openapi白名单
image

📋 PR概述

本PR针对Issue #9072进行了OpenAPI访问控制功能的全面增强,将原有的简单IP黑名单机制升级为功能完善的访问清单系统,
支持白名单/黑名单双模式,并增加了IP正则表达式匹配和完整的单元测试覆盖。

🔄 主要变更

  1. 数据库结构升级
  • 新增字段:
    • list_mode: 访问清单模式 (WHITELIST/BLACKLIST)
    • allowed_list: 访问清单配置 (支持IP、CIDR、域名)
    • comment: 访问清单备注说明
    • dns_cache_ttl_seconds: DNS缓存TTL设置
    • ip_version: IP版本支持 (IPv4/IPv6/Dual)
    • enable_strict: 严格模式开关
  • 数据迁移:兼容历史数据,将老记录统一设置为WHITELIST模式
  • 索引优化:新增update_time索引提升查询性能
  1. 后端功能增强
  • 访问控制逻辑重构:
    • 支持白名单/黑名单双模式切换
    • IP、CIDR网段、域名多维度访问控制
    • 支持通配符匹配 (如 10.2.3.*)
    • 支持范围匹配 (如 10.2.3.[1-234])
  • API过滤器优化:
    • 重构ApiAuthFilter访问控制逻辑
    • 新增IP/CIDR匹配算法
    • 新增域名解析匹配功能
  1. 前端界面完善
  • 访问清单配置界面:
    • 友好的文本输入框,支持多行输入
    • 实时标签预览,直观展示配置项
    • 一键整理功能,自动格式化配置
    • 输入提示和格式验证
  • 表单增强:
    • 模式选择器 (白名单/黑名单)
    • 备注说明字段
    • IP版本和缓存时间配置
  1. 测试覆盖完善
  • 单元测试:新增918行测试代码
  • 测试覆盖范围:
    • 访问清单核心逻辑测试
    • IP/CIDR匹配算法测试
    • 域名解析功能测试
    • 边界条件和异常场景测试
    • 测试覆盖率超过80%
image

📊 变更统计

  • 总文件变更: 9个文件
  • 代码行数: +1,437行, -23行
  • 测试覆盖率: 新增100%核心逻辑覆盖

🧪 测试验证

功能测试

  • ✅ 白名单模式访问控制
  • ✅ 黑名单模式访问控制
  • ✅ IP、CIDR、域名匹配
  • ✅ 通配符和范围匹配
  • ✅ 前端表单交互和数据验证

单元测试

  • ✅ 918行测试代码,覆盖核心逻辑
  • ✅ 边界条件和异常场景测试
  • ✅ Mock数据验证

🚀 部署说明

  1. 数据库升级:
    -- 执行 Flyway 迁移脚本
    V3.8.3_1__openapi_accesslist.sql
  2. 应用部署:
    - 后端:替换jar包并重启
    - 前端:构建并部署新版本
  3. 配置验证:
    - 检查访问清单配置界面
    - 验证IP控制功能正常

🔒 安全增强

  • 更精细的访问控制粒度
  • 支持CIDR网段和域名控制
  • 增加严格模式选项
  • 完善的审计日志记录

📱 用户体验

  • 直观的配置界面
  • 实时配置预览
  • 智能格式整理
  • 详细的帮助提示
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant