Files
Genarrative/backend-rewrite-tasklist/01_M0_M2_FOUNDATION_AND_AUTH.md

7.6 KiB
Raw Blame History

M0 ~ M2基础设施与鉴权任务清单

M0冻结能力与重写边界

能力冻结

仓库边界

交付物

M1Rust 工作区与 Axum 基础设施

工作区搭建

Axum 基础能力

  • 搭建 main.rs / Router / with_state
  • 接入统一配置加载
  • 接入统一日志与 tracing
  • 接入 request_id 中间件
  • 接入统一错误处理中间件
  • 接入当前项目兼容的 response envelope
  • 接入 x-request-id
  • 接入 x-api-version
  • 接入 x-route-version
  • 接入 x-response-time-ms
  • 实现 /healthz

基础工程脚本

  • 新增本地开发脚本
  • 新增测试脚本
  • 新增 lint / fmt / clippy / check 脚本
  • 新增 smoke 脚本
  • 新增 SpacetimeDB 本地开发脚本

阶段验收

  • Axum 服务可独立启动
  • /healthz 返回与当前工程兼容
  • 基础 response envelope 与 request id 行为稳定
  • Rust workspace 能完整编译通过

SpacetimeDB 身份表

  • 设计 user_account
  • 设计 auth_identity
  • 设计 refresh_session
  • 设计 auth_audit_log
  • 设计 auth_risk_block
  • 设计 sms_auth_event
  • 设计 wechat_auth_state

Axum 鉴权服务

  • 实现密码登录
  • 实现账号自动创建 / 幂等登录兼容策略
  • 实现 Bearer JWT 校验
  • 实现 refresh cookie 读取
  • 实现 refresh token 轮换
  • 实现会话吊销
  • 实现全端登出
  • 实现 me 查询

手机验证码登录

  • 接入阿里云短信发送 adapter
  • 实现发送验证码接口
  • 实现验证码校验接口
  • 实现手机号绑定
  • 实现手机号换绑
  • 实现发送频率限制
  • 实现验证码失败次数限制
  • 实现 captcha 触发逻辑
  • 实现风控封禁与解除

微信登录

  • 接入微信 OAuth adapter
  • 实现 wechat/start
  • 实现 wechat/callback
  • 实现微信身份绑定
  • 实现微信账号补绑手机号
  • 实现桌面端 / 微信内打开场景区分

OIDC 与 SpacetimeDB 身份透传

  • 设计 JWT claims
  • 确认 iss/sub/sid/provider/roles 字段
  • 让 Axum 自身可校验 JWT
  • 让 SpacetimeDB 可识别 Axum 签发的身份令牌
  • 验证 reducer / view 可读取用户身份上下文

当前接口兼容

  • 兼容 /api/auth/login-options
  • 兼容 /api/auth/entry
  • 兼容 /api/auth/me
  • 兼容 /api/auth/logout
  • 兼容 /api/auth/logout-all
  • 兼容 /api/auth/refresh
  • 兼容 /api/auth/sessions
  • 兼容 /api/auth/sessions/:sessionId/revoke
  • 兼容 /api/auth/audit-logs
  • 兼容 /api/auth/risk-blocks
  • 兼容 /api/auth/risk-blocks/:scopeType/lift
  • 兼容 /api/auth/phone/send-code
  • 兼容 /api/auth/phone/login
  • 兼容 /api/auth/phone/change
  • 兼容 /api/auth/wechat/start
  • 兼容 /api/auth/wechat/callback
  • 兼容 /api/auth/wechat/bind-phone

阶段验收

  • 密码登录主链可用
  • refresh cookie 主链可用
  • 手机验证码主链可用
  • 微信登录主链可用
  • 所有旧鉴权接口可通过 contract 回归