P3 W-G1 派发面 3b-B:把 3b-A 的 stub worker 升级为真生成 worker 服务壳, 并补 HMAC-SHA256 服务间签名关掉 /dify/callback-internal 的裸 @PermitAll 安全缺口。 后端安全面(评审验证): - CallbackSignatureVerifier(新):HMAC-SHA256 对回调原始字节验签,MessageDigest.isEqual 常数时间比对(抗时序),JDK 原生零新依赖,空密钥=回退 3b-A 仅内网兜底(灰度/回滚兼容) - AigcExecutorProperties:加 callbackSecret 字段(来源 aigc.executor.callback-secret) - AigcExecutorConfiguration:注册 Verifier @Bean(随 executor.enabled 装配) - AdminAigcTaskController.difyCallbackInternal:接 @RequestBody String rawBody 先 HMAC 验签 (错签真 HTTP 401),再用同字节反序列化为 VO,补 traceId/status 非空(绕 @Valid 手动校验); 系统身份 id=0 注入 + finally clearContext 保留(部署窗口#3 同根因) - application-staging.yaml:加 callback-secret 占位符 + worker-url 指真 worker :9401 worker 服务壳(语法+契约对账验证): - wg1/gen-worker/worker/service.py(新):http.server 服务壳包 L2 run_studio (design 展开一句话→自产 gatespec→九门真玩),run.py/agent_loop 逐行不改; POST /generate 收 §6.1 job 立即回 202→后台串行真生成→读 bundle.iife.js→ HMAC 签名(逐字节对齐 Java 验签:json.dumps ensure_ascii=False 一次算定既签既发)→ POST 回调入参驱动落包入 feed 契约对账:执行器 dispatchGeneric job 含 brief/gameId/traceId/templateId ↔ service.py 读取一致; HMAC 两侧密钥(CALLBACK_SECRET/AIGC_CALLBACK_SECRET)须逐字节一致。 e2e(worker 起+HMAC双向证+一句话真生成入feed真玩)待 mini-desktop 跑。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
Java
38.3%
JavaScript
28.5%
Python
19.4%
Vue
6.2%
TypeScript
3.8%
Other
3.7%