用途:在 Better Auth(Next.js 前端)与 FastAPI(Python 后端)之间建立基于 JWKS 的 JWT 认证桥接,实现无状态、可校验的用户身份传递。
主要能力:前端通过 Better Auth 的 jwt() 插件签发 JWT 并暴露 JWKS 端点;后端拉取并缓存 JWKS,按 kid 匹配公钥、用 Ed25519 验签,校验 issuer、audience、过期时间,并从载荷提取用户信息。提供用户隔离模式,校验 JWT 中的 user_id 与 URL 中的 user_id 一致,防止越权访问。还给出 UUID 混合 ID 方案:user 表同时保留 Better Auth 的 String id 与应用用 uuid,外键指向 uuid,JWT 通过自定义 uuid 声明传递,后端按 uuid 查询。
使用方式:前端在 lib/auth.ts 中启用 jwt() 插件并运行 npx @better-auth/cli migrate;用 python scripts/verify_jwks.py http://localhost:3000/api/auth/jwks 验证端点;后端复制 assets/jwt_verification.py 与 assets/auth_dependencies.py,安装 pip install fastapi python-jose[cryptography] pyjwt cryptography httpx,在路由中用 Depends(verify_user_access) 保护接口;前端复制 assets/api_client.ts,并用 authClient.getSession() 配合 useEffect 获取会话。
适用场景:Next.js 前端加 FastAPI 后端的分离式应用,需要跨服务无状态认证与用户数据隔离。
限制:需分别迁移 session 表的 token 列与 jwks 表;Better Auth 不提供 useSession() 钩子;需注意前后端字段名、可选字段、时区与标签类型不一致等问题;生产环境应使用 HTTPS 并核对安全清单。具体价格与平台支持暂未提供。