跳转至

多因素登录

Solar Network 使用自主研发的多因素认证(MFA)系统。与需要恰好两步的传统 2FA 不同,我们的系统非常灵活——你可以配置多个验证因素,登录时选择其中任意一个即可。

登录流程

第一步:身份验证

首先提供你的身份(用户名或邮箱)和密码。

第二步:验证因子

密码验证通过后,系统检查你配置的认证因素。然后你可以选择其中任意一个来完成登录。

第三步:Token 交换

验证成功后,你将获得一个访问 token(以及可选的刷新 token)用于 API 认证。

认证因素

因素 工作原理 信任等级
密码 你的账户密码 1
邮箱验证码 发送到邮箱的一次性验证码 2
TOTP 验证器应用生成的验证码(Google Authenticator、Authy 等) 3
应用内通知 推送通知发送的一次性验证码 2
通行密钥 生物识别(指纹、Face ID)或设备密码 3
实体安全密钥 从商店/活动获得的硬件安全密钥 3
二维码登录 用已认证的移动设备扫描二维码 3
恢复码 一次性备用代码 0

信任等级

每个因素都有一个信任等级。系统使用这些等级来确定高安全场景下需要的验证步骤数:

等级 说明
0 仅用于恢复(不能登录)
1 基础(密码、PIN)
2 标准(邮箱、应用内通知)
3 最高(TOTP、通行密钥、安全密钥、二维码登录)

跨设备登录批准

如果你在其他设备上已登录,你可以从另一台设备批准登录请求,而无需自己完成第二步验证:

  1. 在设备 A(例如新手机)上开始登录
  2. 密码验证后,设备 A 显示"等待批准"
  3. 设备 B(你已登录的设备)收到通知
  4. 在设备 B 上查看登录详情(设备名称、IP、平台)
  5. 点击批准拒绝(可能需要输入 PIN)
  6. 批准后,设备 A 通过 WebSocket 接收事件并立即交换 token

这在你的新设备上无法访问第二验证因素时非常有用。

WebSocket 事件

事件 方向 说明
auth.challenge.pending 服务端 → 其他设备 新的登录挑战等待批准
auth.challenge.approved 服务端 → 发起设备 登录已被另一设备批准
auth.challenge.declined 服务端 → 发起设备 登录已被另一设备拒绝

会话管理

当登录从另一设备被批准时,新会话成为批准设备的子会话。你可以在账户安全设置中查看和管理所有活跃会话(并撤销它们)。

Token 模型

Solar Network 使用统一的 JWT 认证:

  • 访问 token: 短期有效(1 小时),使用方式:Authorization: Bearer <token>
  • 刷新 token: 长期有效(30 天),用于获取新的访问 token
  • Token 为 RS256 JWT,由各服务本地验证
  • 撤销通过 Redis 追踪(auth:revoked:jti:{jti}

推荐设置

  1. 恢复码(必需)—— 你的安全保障
  2. 通行密钥或 TOTP(推荐)—— 日常使用
  3. 邮箱或应用内通知 —— 备用方式

这样你拥有:快速登录(通行密钥)、离线能力(TOTP)和备用选项(邮箱、恢复码)。