最近运维同学为了提高安全性,用Google Authenticator对服务器加了双重认证,此后登录服务器需要先输入动态密码,在输入服务器密码。Google Authenticator相当于软token,对他不了解的同学可以看下这篇文章:谷歌验证 (Google Authenticator) 的实现原理是什么?。
运维同学的出发点是好的,但是我原来写的各种自动登录服务器的脚本统统失效了。蛋疼的是我现在登录服务器的流程变成了:
掏手机(我的是iPhone)
解锁,碰上指纹解锁失败的情况还需要输入密码解锁
打开Authenticator客户端,等待Verification Code更新大概1s
记住Verification Code,然后到Mac端输入
输入服务器密码,登录...
原本我只执行自己搞的一个命令就完事了,由于我经常需要登录各种不同的服务器,这种方式对工作效率的影响是可想而知的。
目前Google官方的客户端只有Android和iOS的,于是开始找找看有没有针对PC,发现有个针对Windows系统的WinAuth支持Google Authenticator,我无论工作、在家基本都用Mac,所以这个WinAuth我是没法用了,后来在GitHub上找到一个MacAuthenticator的工具,下载下来试用了一下基本能用,至少Mac端可以得到Verification Code不需要依赖手机了,但是依然解决不了效率问题,而且那个工具居然没法退出...
没个顺手的工具,看来还得我亲手开发个了,于是简单了设计了下我需要的功能:
支持从二维码中直接识别Authentication Code,也就是otpauth协议中的那个secret
支持Authentication Code管理,保存、添加、删除这些基本功能得有
能够非常方便的得到我想要的Verification Code
不需要手抄验证码,点击自动复制
支持全局快捷键直接填充验证码,不需要麻烦的点鼠标(我工作用触摸板,不用鼠标,比较依赖键盘)
支持在shell脚本中获取验证码(只有这样,才能让我以前写的自动化工具正常工作)
技术调研
GitHub上已经有个MacAuthenticator开源项目了(基于OC的),所以技术实现上应该没什么障碍。
语言方面,因为14年的时候参与过《The Swift Programming Language》翻译(现在已经成为苹果官方指定的中文版本了),但是还从来没用过Swift,所以决定采用Swift开发,就当学习了。
otp协议方面,Google开源了其算法:
网友评论

