安全与密钥
配置 JWT、OPAQUE、Provider 凭据加密、密码复杂度、CORS 和可信代理。
SyncTV 把安全边界拆成几层:
server.cluster_secret。| 登录方式 | 可作为第一因素 | 可作为第二因素 | 说明 |
|---|---|---|---|
| 密码/OPAQUE | 是 | 仅当服务端返回 MFA_METHOD_PASSWORD 时可用 | OPAQUE 登录不等同于 password MFA verifier |
| WebAuthn/passkey | 是 | 是 | 需要启用 WebAuthn 配置并完成绑定 |
| 邮箱验证码 | 是 | 是 | 依赖 SMTP 和验证码发送能力 |
| OAuth2 | 是 | 否 | OAuth2 不参与本地 2FA,但 2FA 用户可以直接用 OAuth2 登录 |
用户开启 2FA 前,系统会确认至少有两种可用的本地验证方式。开启后,使用本地单因素方式登录会进入 MFA 会话,客户端需要根据返回的剩余验证方式完成第二步。
开启 2FA 后,系统不应该接受旧的单因素 refresh token 继续刷新会话。满足 2FA 或 OAuth2 登录路径后签发的 token 会带有可接受的认证上下文。
实际语义:
本地第一因素成功后,如果需要第二因素,服务端不会直接签发最终 token,而是创建一个短期 MFA 会话。
客户端需要:
失败的 MFA password 尝试会记录到暴力破解保护中,不能绕过普通密码登录的失败计数和锁定策略。
用户偏好用于用户级配置,其中 two_factor_enabled 是安全敏感字段。
约束:
management gRPC 是 CLI 和运维命令使用的控制面。
生产建议:
management.auth_token。management.enable_reflection 生产默认关闭。management token 不是普通用户 access token。它代表运维控制面权限,应按基础设施 secret 管理。
Provider 负责决定上游请求 header。proxy 层只执行 Provider 给出的配置。
这意味着:
Range、Accept、User-Agent 等 header 不会被 proxy 自动转发。Range,Provider 必须显式选择。User-Agent,Provider 返回给客户端的 header 应与服务端代理 header 保持一致。安全与密钥
配置 JWT、OPAQUE、Provider 凭据加密、密码复杂度、CORS 和可信代理。
邮件与 OAuth2
配置邮箱验证码、SMTP 和运行时 OAuth2 provider 配置。
WebAuthn
配置 passkey 的 RP ID、origin、允许 origin 和 challenge 超时。
限流
配置 HTTP、gRPC、聊天、弹幕、WebSocket 和认证相关限流。