⚠️ 本檔(v1)已被 v2 取代,勿用。改用:
handoff/2026-06-19-agent-auth-v2-TRACKER.md(進度中樞)
handoff/2026-06-19-agent-auth-v2-plan-{backend,agent,frontend}.md(三 track 詳盡計劃)。 v2 改:自我註冊 + 心跳 + 憑證雲端簽發(取代本檔的 ops 預發/雲端抓指紋)。
對應設計:
design-agent-auth.md。範圍:cloud↔︎agent 認證機制;連線方向不動(決策 7)。 原則:用AGENT_AUTH_MODE(none|full)feature flag 包覆,過程不破壞現有 demo;全綠才把 dev 切full。
scripts/agent-auth/gen-dev-pki.sh:產 ① 內部 CA ② 雲端 client cert+key ③ agent server cert+key ④ JWT RS256 keypair。.secrets/agent-auth/(gitignored),不入版控。2026-06-19-fr039-remote-agents-auth-columns.sql:remote_agents 加 device_fingerprint、status。AGENT_AUTH_MODE(預設 none)、CA/client cert/key 路徑、JWT 私鑰路徑(走 env/secret)。RemoteAgentEntity / mapper / serializer 補 device_fingerprint、status。RemoteAgentAdapter:mode=full 時 httpx 帶 client cert + verify=CA + Authorization: Bearer + 檢查回應 X-Agent-Fingerprint;mode=none 維持現狀。status != revoked。/host/product_uuid + /host/machine-id + /host/mac → sha256 快取。GET /agent-info(回 fingerprint/version)。live_fp == bound_fp(gated by env)。X-Agent-Fingerprint。deploy/collect-host-id.sh。bind(建立時抓 fingerprint 存)、rebind(重新綁定,manager)、revoke/unrevoke(status,manager)。AGENT_AUTH_MODE=full → 驗:正常連線通、改指紋擋、撤銷即時擋、JWT 過期擋。AGENT_AUTH_MODE=none 不影響現有 121 demo;最後才切 full。