oapi验签链治理③:删除 /oapi/internal/sign-key 兜底端点,oapi 可整段对外
build / build-push (push) Successful in 53s

- 删 SignKeyInternalController(/oapi/internal/sign-key/{appId},返回 appSecret)、
  SignKeyInternalIpFilter、SignKeyInternalProperties 三文件
- application.yml 删 yh.sign-key-internal 块(其中 192.168.10.0/200 本就是非法前缀,永不匹配)
- OpenApiAuthEnforceConfiguration:删 IP 白名单过滤器与 SignKeyInternalProperties 注册;
  **保留 /api/open 与 /oapi/* 的强制签名**(② oapi 整段对外代理依赖它)
- OapiLogAspect:删对 SignKeyInternalController 的排除死代码
- SignKeyCacheService 契约固化:验签密钥以共享 Redis sign:app:* 为单一真源、UserBase 唯一写入方、
  读写走密钥链专用库(缺省 db0)、读侧无兜底(Redis 不可用即 fail-closed)
- 实测线上该端点在容器内匿名访问为 403(IP 白名单生效)、公网无 Caddy 路由;
  删除后既无密钥外泄面,也使 /userbase/oapi/* 整段代理安全

验证:mvn compile 通过;本模块单测 124 项中 5 项 MySQL 连接失败为环境性(已用 git stash 在
原始树复跑证明同样失败)。
This commit is contained in:
chenxing
2026-09-16 18:08:25 +08:00
parent 9ec65698b6
commit 30b4b0504a
7 changed files with 14 additions and 287 deletions
-6
View File
@@ -71,12 +71,6 @@ yh:
identity:
# 允许调用 oapi/identity/switch 的应用 appKey 白名单(逗号分隔;100001=UserHome,后期会新增)
switch-allowed-app-keys: 100001,100002
sign-key-internal:
enabled: true
ips:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.10.0/200
# 接口文档(springdoc):分组见 SwaggerConfig(oapi=开放接口契约权威源 / api=业务接口)
# 契约快照导出:GET /v3/api-docs/oapi