登录入口原先跑在 NAS 的 fam-core 里,NAS 或 frp 隧道一挂, smart-camera.zichuan.xyz/login 直接 502——连登录页都打不开。登录是入口, 不该依赖家里那台机器,整体搬到甲骨文(前端静态文件和 auth-hub 本来就在这台)。 跟旧实现的三处关键差异: - 换 token / 拉 JWKS 走 AUTH_HUB_INTERNAL_BASE(本机 :5300),不再跨公网 TLS。 旧链路上 PyJWKClient 用 urllib + 系统 CA(群晖易 CERTIFICATE_VERIFY_FAILED)、 两机时钟偏差会让 iat 显得来自未来,这两个坑一起消失;iss 校验和浏览器跳转 仍用公网 issuer - 会话改无状态 HS256 签名 cookie,服务重启不掉线(旧实现是进程内 token 表) - 回调失败渲染错误页,不再 302 回 /login。旧实现失败即跳 /login,而 auth-hub 只要还有会话就立刻再签一个 code 跳回来,两边对跳成死循环,浏览器只报 「重定向次数过多」,既看不到登录页也看不到原因 fam-core 侧删除 auth.py 与 test_auth.py,鉴权改由甲骨文 Caddy 的 forward_auth 前置拦截(打 /api/auth/verify)。 测试:fam-edge 新增 16 个用例,含「失败分支绝不 302」回归测试、 「服务端走内网但 iss 按公网校验」、「cookie 无状态」。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
483 B
483 B