认证
Firmiana 使用不透明的数据库支持的 Bearer Token 进行 Matrix 会话管理,而非纯 JWT。
令牌类型
认证流程
注册(UIAA)
注册使用 UIAA(用户交互认证 API)框架。服务器声明可用的认证流程,客户端完成每个阶段。
支持的阶段:
m.login.password— 用户名/密码认证m.login.dummy— 空操作阶段(用于无密码注册)
登录
登录创建新的设备条目并签发访问令牌 + 刷新令牌对。
令牌刷新
登出
令牌验证
每个认证请求都经过:
MatrixAccessTokenValidator.validateToken()— 从 Authorization 头提取Bearer <token>MatrixTokenService.validateAccessToken()— 在user_access_tokens表中查找令牌- 令牌元数据加载到
Authentication属性中:user_id— Matrix 用户 IDdevice_id— 设备标识符access_token_id— 数据库记录 IDis_guest— 访客标志is_admin— 管理员标志
密码存储
密码使用 PBKDF2 + SHA-256 进行哈希。系统支持在用户成功登录时自动升级旧版哈希格式。
配置
Warning
application.yml 中的 jwt.enabled: true 设置是 Matrix 认证的一个干扰项。Matrix 会话令牌是不透明的数据库支持令牌,不是 JWT。JWT 配置用于 Micronaut Security 集成,但不是会话验证的来源。