mjava 基座 SHALL 拒绝时间戳超出配置窗口的请求,以限制重放攻击的有效窗口。
X-MJ-Timestamp 与服务端当前时间差 ≤ mjava.auth.window(默认 300 秒)window(无论提前还是滞后)401 { code: "AUTH_TIMESTAMP_OUT_OF_WINDOW" }clientTimestamp 与 serverTimestamp 供排查mjava 基座 SHALL 通过 Nonce 缓存实现在时间窗内的一次性请求保证。同一 Nonce 在窗口期内只允许通过一次。
X-MJ-NonceNonceCache.putIfAbsent(nonce) 成功NonceCache.putIfAbsent 返回 false401 { code: "AUTH_NONCE_REPLAYED" }NonceCache 达到 mjava.auth.nonce-cache-size 上限NonceCache 的 TTL MUST 略长于 mjava.auth.window,以避免边界时间戳被错误接受。
mjava.auth.window + 30 秒Phase 1 的 Nonce 去重 SHALL 在单 JVM 实例内生效;多实例部署时同一 Nonce 可能被两个实例各接受一次。这是已知限制,不在本 change 范围。
nonce-cache-size 建议单实例足够承载高峰 QPS × window 秒的组合