标题有点绕口,甚至听起来有点反直觉。

故事的背景是这样的:参加 AWS 活动获得的账户强制开启 MFA,但我们还想在团队内部共享使用,于是产生了这个需求。

AWS 控制台在第一次注册时强制绑定多因子验证。这意味着其他人如果想登录这个账户,就得随时联系我,再由我把数字验证码发给他,实在很不方便,所以我想到了共享 MFA。

image-20250516164159950

前几天逛商店时看到了这个项目,觉得有点意思就下载了,没想到这么快就用上了。懒猫商店一键部署很方便,当成 SaaS 服务来用,基本不用考虑部署运维。

image-20250516163824579

之前给小伙伴开了懒猫微服账户,共享了 Planka 来看项目进度,这次又把 2FAuth 的权限添加给他。

image-20250516163911970

首先我这边先注册管理员的账户,默认是登录页面,需要切换一下。

image-20250516164749502

登录之后会提示绑定一下这个账户的 MFA,我就是为了不在手机上安装 MFA 软件才用这个的,就不要套娃了。反正外面还有懒猫的验证系统,那个还有 TLS 加密,安全码验证。

image-20250516164845425

选择不绑定设备之后,在这里导入需要设置的 MFA,这可以用摄像头或者导入二维码文件。我用的电脑端,所以直接在应用处截图,然后导入到这里了。

image-20250516164821161

点击最下面的“导入”,然后选择“二维码 → 上传”即可。

image-20250516165311672

导入之后是这样的,可以二次确认签发机构。

image-20250516165259782

然后把生成的 6 位数字填写到 AWS 控制台,就可以完成验证。

image-20250516165435265

在 2FAuth 控制台中,点开条目就可以查看 6 位数字验证码。

image-20250516165711375

回到一开始的话题,怎么共享给其他账户呢?依次点击“管理员 → 用户”,然后新建一个普通用户。步骤基本和前面一致。

image-20250516165543137

本来以为这里有用户组的概念,可以把两个用户和 MFA 放在同一个组里达到共享目的,结果发现分组只是用来区分条目的标签,也没有找到把用户加入组的操作。那就从管理员账户导出,再到另一个用户中导入吧。

首先试了二维码,但导入时提示 Server Error。于是查了 Wiki,找到的都是其他 MFA 软件导入 2FAuth 的方法。无奈只能导出配置文件,文件名叫 2fauth_export.json。

image-20250516170143799

登录新用户后点击“新建”,选择“文本文件”,再导入刚才的配置文件即可。

image-20250516165311672

配置文件基本长这样:

安全提示

导出的配置文件包含 TOTP Secret,拿到它的人可以生成相同的 MFA 验证码。示例里已经使用占位符;实际操作时不要把导出文件上传到网盘、聊天工具或代码仓库,导入完成后应及时从本地删除。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"app": "2fauth_v5.3.2",
"schema": 1,
"datetime": "2025-05-16T08:35:07.676665Z",
"data": [
{
"otp_type": "totp",
"account": "Q",
"service": "AWS SSO",
"icon": null,
"icon_mime": null,
"icon_file": null,
"secret": "secretsss",
"digits": 6,
"algorithm": "sha1",
"period": 30,
"counter": null,
"legacy_uri": "otpauth://totp/"
}
]
}

整个过程有点绕。有人会说,每个人手机上安装 Google Authenticator,再各自扫一下不就好了吗?

为什么采取这个方案?

  1. 之前在手机上安装类似软件,每次去三里屯维修时都被告知返厂要抹掉数据,下次还得重新绑定,还有一些软件只认 MFA 不认人。

    这个过程不光折腾得够呛,而且 Apple 本身的问题还要 MFA 来买单。

  2. 起初是想做一个类似于团队共享 MFA 的场景的,类似于 RBAC,控制起来很灵活,但是实际体验下来是没有达到的。

  3. 把最早的 MFA 二维码截图共享出去也能扫描,但这样会直接扩散 MFA Secret,风险更高,不建议这么做。


忘机山人二维码

扫码关注「忘机山人」