自建双因素认证器 2FAuth 完美替代 Google Auth / Microsoft Auth
前言
现在越来越多的网站强制要求打开二次验证了,国内的网站比较流行手机验证码,但国外的网站更加流行 TOTP 这类动态密码。
而想要保存 TOTP 就需要用到身份验证器,比如常见的 Google Authenticator 或者 Microsoft Authenticator,由于不可抗力的网络原因,这两个验证器云同步过程中可能会造成数据的丢失,网上有不少的案例了。
另外比较常见的是各类密码管理工具中自带的 2FA 功能,比如 Bitwarden,但是 2FA 和密码存储在一起,万一数据泄露就是一锅端,也就失去了二次验证的意义了,因此更加建议单独搭建一个 2FAuth 来存储 TOTP。
2FAuth 是 Web App,数据存储在你自己的 VPS 或者 NAS 中,并且每个设备也不需要下载 App,只要打开网页就能访问,自然也不存在数据同步丢失的问题,只需要定期备份自己的数据库文件,即便 VPS 或者 NAS 损耗,也可以很方便的恢复数据。
安装
建议通过 Docker Compose 进行安装,2FAuth 有非常多的环境变量,具体可以参考官方文档,下面给出最精简的 Compose
警告
1.如果 APP_URL 必须与实际访问 URL 一致,否则访问时可能会白屏
2.在运行 Compose 之前,你还需要手动创建 2fauth 目录并修改所有权和权限,否则启动时创建 SQLite 可能会失败
mkdir 2fauth
chown 1000:1000 2fauth
chmod 700 2fauth
services:
2fauth:
image: 2fauth/2fauth
container_name: 2fauth
volumes:
- ./2fauth:/2fauth
ports:
- 8000:8000/tcp
environment:
- APP_URL=http://192.168.1.10:8000
配置
此时,再访问 http://ip:8000
,你应该就能看到登录页面了,点击下方的 Register 进行注册

注册需要填写 Name、Email 和 Password,建议设置复杂度较高的密码

登录到 2FAuth 后,可以看到和其他验证器一样,可以通过扫描二维码添加 2FA 非常的方便

如果你的电脑没有摄像头不方便扫码,也可以选择 Use the advanced form
手动添加,只需要将平台的密钥粘贴到 Secret
即可,上方的 Service 和 Account 用于区分平台和账号,可以随意填写。

如果你已经在使用其他的身份验证器,也可以直接导入到 2FAuth 中作为备份,目前支持下面这些验证器,需要注意的是,导出时不要勾选加密
Plain text | QR code | JSON | |
---|---|---|---|
Google Authenticator | ✔ | ||
Aegis Auth | ✔ | ✔ | |
2FAS auth | ✔ | ||
FreeOTP+ | ✔ | ||
2FAuth | ✔ |

效果
最终效果如下图,Icon 会根据你填写的 Service 名字自动匹配,如果没有匹配上也可以选择手动上传
下方的小点用于指示过期时间,并且最下方还会显示下一个动态密码,避免了刚复制完密码就过期的情况,更加的方便

预览: