FreeOTP 是一款由 Red Hat 开发的开源双因素认证(2FA)应用程序,支持 基于时间的一次性密码(TOTP) 和 基于事件的一次性密码(HOTP) 协议。需要注意的是,FreeOTP本身仅为客户端工具,并不包含独立的服务器组件。其功能依赖于与支持 TOTP/HOTP 协议的服务端系统(如认证服务器、身份管理平台等)协同工作。

FreeOTP 客户端通过与服务端共享密钥生成动态验证码,服务端通过验证此码完成身份认证。核心流程如下:
1. 服务端生成密钥:用户启用2FA时,服务端生成唯一的密钥(Base32编码),并存储于数据库。
2. 客户端绑定:服务端以二维码(包含密钥、算法、计数器等参数)形式供用户扫码绑定至FreeOTP。
3. 动态码生成:客户端基于密钥和时间/计数器,按RFC 4226(HOTP)或RFC 6238(TOTP)标准生成6-8位数字。
4. 服务端验证:用户提交动态码后,服务端使用相同算法计算对比,并允许合理的窗口期容错。
以下服务端系统原生支持TOTP/HOTP协议,可与FreeOTP直接集成:
| 服务端类型 | 代表产品 | 应用场景 |
|---|---|---|
| 身份认证服务器 | Keycloak、FreeIPA | 企业统一身份管理 |
| Radius服务器 | FreeRADIUS、Microsoft NPS | 网络设备登录认证 |
| 云服务平台 | AWS IAM、Google Cloud IAM | 云账户安全保护 |
| 开源应用 | Nextcloud、WordPress(插件) | 自助服务系统增强 |
FreeOTP同时支持的两种协议在实现机制上有明显差异:
| 参数 | TOTP | HOTP |
|---|---|---|
| 算法基础 | HMAC-SHA1 | HMAC-SHA1 |
| 动态因子 | 时间戳(30秒窗口) | 事件计数器 |
| 同步要求 | 需时间同步 | 无需时间同步 |
| 典型应用 | 常规2FA登录 | 物理令牌设备 |
在部署FreeOTP企业级解决方案时,需关注:
1. 密钥管理:使用HSM或加密数据库存储种子密钥,禁止明文传输。
2. 容灾设计:设置备用验证器(如备用码),避免单点故障导致账户锁定。
3. 审计日志:记录所有2FA激活、使用事件,满足合规要求(如GDPR、ISO27001)。
4. 协议扩展:高级场景可支持SHA256/SHA512算法,提升哈希强度。
典型TOTP服务端配置需包含以下参数(以YAML格式为例):
yaml totp: issuer: "CompanyName" algorithm: "SHA1" # 可选SHA256/SHA512 digits: 6 # 验证码长度 period: 30 # 时间步长(秒) skew: 1 # 允许的时间窗口偏移注:FreeOTP的轻量化设计使其无需独立服务端,但企业需确保认证服务端严格遵循RFC标准,避免因实现差异导致兼容性问题。

查看详情

查看详情