跳到主要内容

双因素认证 (2FA)

使用基于时间的一次性密码增强安全性

OmniCRM 支持 双因素认证 (2FA),使用基于时间的一次性密码 (TOTP)。这通过要求用户提供其密码和来自身份验证应用程序的时间敏感代码,增加了一层额外的安全性。

另请参见:RBAC 以获取 2FA 管理权限,身份验证流程 以获取登录过程的详细信息。

目的

2FA 提供:

  1. 增强安全性 --- 即使密码被泄露,也能保护账户。
  2. 合规性 --- 满足受监管行业的安全要求。
  3. 用户选择 --- 对用户可选,可以按角色或全局强制执行。
  4. 行业标准 --- 使用与 Google Authenticator、Authy、Microsoft Authenticator 和其他标准应用程序兼容的 TOTP 协议。

2FA 的工作原理

当为用户启用 2FA 时:

  1. 设置 --- 用户在注册期间使用其身份验证应用程序扫描二维码。
  2. 登录 --- 输入用户名/密码后,用户提供来自其应用程序的 6 位数字代码。
  3. 验证 --- 系统验证基于时间的代码是否与预期值匹配。
  4. 访问 --- 只有在验证两个因素后,用户才能获得访问权限。

启用 2FA

对于个人用户

用户可以为自己的账户启用 2FA:

  1. 导航到 用户设置个人资料
  2. 选择 启用双因素认证
  3. 使用身份验证应用程序扫描二维码
  4. 输入验证码以确认设置
  5. 将备份代码保存在安全位置

备份与恢复

备份代码

启用 2FA 时,用户会收到备份代码,如果他们的设备不可用,可以使用这些代码:

  • 每个代码仅限一次使用
  • 将代码安全地离线存储
  • 如果所有代码都已使用,请生成新代码

管理员重置

如果用户失去对其身份验证器的访问权限并且所有备份代码都已用尽,具有数据库访问权限的管理员可以通过清除数据库中的 totp_secret 字段手动重置用户的 2FA。然后用户可以重新启用 2FA。

API 集成

为用户启用 2FA

POST /2fa/enable/user/{user_id}

{
"password": "current_password"
}

响应包括配置 URI(用于二维码)和备份代码。

验证 2FA 设置

POST /2fa/verify-setup/user/{user_id}

{
"code": "123456"
}

在登录期间验证 2FA

POST /2fa/verify/user/{user_id}

{
"code": "123456"
}

成功验证后返回访问令牌、刷新令牌和用户数据。

重新生成备份代码

POST /2fa/backup-codes/regenerate/user/{user_id}

需要身份验证。返回一组新的备份代码。

最佳实践

  • 优先备份代码。 在完成 2FA 设置之前,始终保存备份代码。
  • 教育用户。 提供清晰的设置和恢复说明。
  • 安全重置过程。 在手动重置数据库中的 2FA 之前验证用户身份。

常见问题解答

支持哪些身份验证应用程序? 任何兼容 TOTP 的应用程序(Google Authenticator、Authy、Microsoft Authenticator、1Password 等)。

如果我丢失手机怎么办? 使用备份代码或联系管理员重置 2FA。

我可以使用 SMS 而不是应用程序吗? 目前,仅支持 TOTP 身份验证应用程序。

2FA 是必需的吗? 这取决于您组织的政策。通常,2FA 对于管理和支持人员角色是必需的,但对客户用户是可选的。系统不强制客户账户使用 2FA(客户角色用户不���看到 2FA 注册提示)。

TOTP 代码有效期多长? 代码每 30 秒刷新一次,并且有一个小的验证时间窗口(通常接受当前 30 秒窗口以及前一个/下一个窗口的代码,以容忍时钟偏差)。