2.9 KiB
2.9 KiB
platform-auth 鉴权平台适配 crate 说明
日期:2026-04-21
1. crate 职责
platform-auth 是 Rust 工作区中的鉴权平台适配 crate,当前与后续负责:
- Access token JWT 的 claims 结构、签发与校验适配。
- refresh cookie 的读写、签名与轮换适配。
- 手机验证码发送、校验与外部 provider 适配。
- 微信 OAuth start / callback 的平台调用适配。
- 供
module-auth与crates/api-server复用的鉴权基础设施能力。
2. 当前阶段已落地内容
本阶段已经完成 JWT 基础能力首版落地:
- 新增
JwtConfig,统一管理issuer、secret与 access token TTL。 - 新增
AccessTokenClaimsInput与AccessTokenClaims,把文档中冻结的iss/sub/sid/provider/roles/ver/phone_verified/binding_status/display_name映射到 Rust 结构。 - 新增
sign_access_token(...),按HS256签发 access token。 - 新增
verify_access_token(...),统一校验iss/sub/exp/iat与 JWT 签名。 - 增加单元测试,覆盖基本签发/校验、issuer 不匹配与空角色拒绝。
当前阶段仍未进入:
- refresh cookie 读写与轮换。
- 短信 provider 适配。
- 微信 OAuth 适配。
module-auth领域规则与数据库真相读取。
3. 本阶段 API
当前开放给工作区其它 crate 的最小 API:
JwtConfig::new(...)AccessTokenClaims::from_input(...)sign_access_token(...)verify_access_token(...)AuthProviderBindingStatus
4. 配置口径
当前 api-server 接入时采用以下环境变量口径:
GENARRATIVE_JWT_ISSUER默认值:https://auth.genarrative.localGENARRATIVE_JWT_SECRET默认值:genarrative-dev-secretGENARRATIVE_JWT_ACCESS_TOKEN_TTL_SECONDS默认值:7200- 兼容读取旧变量:
JWT_ISSUER、JWT_SECRET、JWT_EXPIRES_IN
说明:
JWT_EXPIRES_IN当前兼容2h、30m、900这类简单时长格式。- 当前阶段保持
HS256,优先保证与旧 Node 方案迁移平滑。
5. 边界约束
platform-auth只承接平台适配,不承接module-auth的业务规则和状态真相。sub必须是稳定user_id,sid必须是会话 ID,不能退化为一次 token 的随机 ID。- 不允许把手机号、openid、refresh token hash、风控状态等敏感或高频变化字段塞进 JWT。
- 鉴权状态最终由
module-auth与crates/spacetime-module管理,前端接口由crates/api-server暴露。 - 不允许把短信、微信、Cookie、JWT 等外部细节重新散落到多个业务模块中各自实现。