标题有点绕口,甚至听起来有点反直觉。
故事的背景是这样的:参加 AWS 活动获得的账户强制开启 MFA,但我们还想在团队内部共享使用,于是产生了这个需求。
AWS 控制台在第一次注册时强制绑定多因子验证。这意味着其他人如果想登录这个账户,就得随时联系我,再由我把数字验证码发给他,实在很不方便,所以我想到了共享 MFA。

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

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

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

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

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

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

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

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

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

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

本来以为这里有用户组的概念,可以把两个用户和 MFA 放在同一个组里达到共享目的,结果发现分组只是用来区分条目的标签,也没有找到把用户加入组的操作。那就从管理员账户导出,再到另一个用户中导入吧。
首先试了二维码,但导入时提示 Server Error。于是查了 Wiki,找到的都是其他 MFA 软件导入 2FAuth 的方法。无奈只能导出配置文件,文件名叫 2fauth_export.json。

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

配置文件基本长这样:
安全提示
导出的配置文件包含 TOTP Secret,拿到它的人可以生成相同的 MFA 验证码。示例里已经使用占位符;实际操作时不要把导出文件上传到网盘、聊天工具或代码仓库,导入完成后应及时从本地删除。
1 | { |
整个过程有点绕。有人会说,每个人手机上安装 Google Authenticator,再各自扫一下不就好了吗?
为什么采取这个方案?
之前在手机上安装类似软件,每次去三里屯维修时都被告知返厂要抹掉数据,下次还得重新绑定,还有一些软件只认 MFA 不认人。
这个过程不光折腾得够呛,而且 Apple 本身的问题还要 MFA 来买单。
起初是想做一个类似于团队共享 MFA 的场景的,类似于 RBAC,控制起来很灵活,但是实际体验下来是没有达到的。
把最早的 MFA 二维码截图共享出去也能扫描,但这样会直接扩散 MFA Secret,风险更高,不建议这么做。
扫码关注「忘机山人」


