状态(2026-04-18 立项):提案阶段,未实施 优先级:高(Phase B.2 基座安全增强,早于 mjava-com 专项)
mjava 基座当前 API 安全裸奔:
filter/RequestFilter 和 RequestInterceptor 当前只打日志,不做任何校验)需要在基座提供可选启用的"请求鉴权 + 防重放"统一能力。默认关闭(保护现有 mcli/shunfeng/guangming 生产服务不中断),子项目按需开启;mjava-com 未来的调用方签名也将复用本能力,避免重复建设。
与 add-observability-foundation 的 TraceId 互补:前者负责"日志可追溯",本 change 负责"调用不可伪造"。
新增 3 个基座组件(全部放在 mjava/,子项目零代码改动即可通过配置启用):
com.malk.filter.AuthFilter:请求进入时校验 token/signature + 时间窗 + Nonce 去重;失败返回 401/403com.malk.utils.UtilSignature:HMAC-SHA256 签名计算与验证工具类com.malk.core.NonceCache:基于 UtilToken.TimedCache 的 Nonce 去重缓存(封装 namespace + TTL = 时间窗)配置开关:
mjava:
auth:
enabled: false # 默认关闭;子项目可按需打开
secret: ${AUTH_SECRET} # 服务端共享密钥(环境变量注入)
window: 300 # 时间窗秒数,默认 5 分钟
nonce-cache-size: 10000 # Nonce 缓存条目上限(LRU 淘汰)
exempt-paths: # 豁免路径清单(正则或 Ant 风格)
- /actuator/** # 健康检查
- /api/*/callback/** # 第三方 webhook 回调(自带签名协议)
另加 @NoAuth 注解,方法/类级别显式豁免。
request-auth:基于 HMAC-SHA256 + 共享密钥的统一请求鉴权replay-guard:基于时间窗 + Nonce 的防重放保护AuthFilter.java / UtilSignature.java / NonceCache.java / AuthConfig.java / @NoAuth 注解 / AuthConfigProperties.javaRequestFilter / RequestInterceptor / CatchException 原职责application.yml 新增 mjava.auth.* 结构,默认 enabled: falseenabled: false 默认不拦截)UtilSignature + NonceCache;mjava-com 的 CallerAuthInterceptor 设计可简化DingCallbackCrypto / 宜搭 token 验证等各自保留)