TBD - created by archiving change add-request-auth-replay-guard. Update Purpose after archive.
mjava 基座 SHALL 提供可配置的 HMAC-SHA256 请求签名校验机制。当 mjava.auth.enabled=true 时,所有非豁免请求 MUST 通过签名校验才能进入业务 Controller。
X-MJ-Key / X-MJ-Timestamp / X-MJ-Nonce / X-MJ-Signature)HMAC-SHA256(secret, timestamp + "\n" + nonce + "\n" + method + "\n" + path + "\n" + bodyHash)authKey 字段供日志追溯X-MJ-Signature 不一致403 { code: "AUTH_SIGNATURE_INVALID" }authKey + path + latencyMs401 { code: "AUTH_HEADER_MISSING" }本能力 SHALL 支持三级豁免策略,优先级从上到下:全局开关 > 路径豁免 > 注解豁免。
mjava.auth.enabled=falsemjava.auth.exempt-paths 列表中任一 Ant 风格模式/actuator/**(健康检查)、/api/*/callback/**(第三方 webhook)@NoAuth 注解HandlerInterceptor.preHandle(能访问到 HandlerMethod)secret MUST 通过环境变量注入,禁止硬编码。enabled=true 但 secret 为空时 MUST 拒绝启动或拒绝请求。
mjava.auth.enabled=true 但 mjava.auth.secret 为空或未设置503 { code: "AUTH_CONFIG_MISSING" }application.yml 中 secret: ${AUTH_SECRET}AUTH_SECRET 变量