最近運(yùn)維同學(xué)為了提高安全性,用Google Authenticator對(duì)服務(wù)器加了雙重認(rèn)證,此后登錄服務(wù)器需要先輸入動(dòng)態(tài)密碼,在輸入服務(wù)器密碼。Google Authenticator相當(dāng)于軟token,對(duì)他不了解的同學(xué)可以看下這篇文章:谷歌驗(yàn)證 (Google Authenticator) 的實(shí)現(xiàn)原理是什么?。
運(yùn)維同學(xué)的出發(fā)點(diǎn)是好的,但是我原來寫的各種自動(dòng)登錄服務(wù)器的腳本統(tǒng)統(tǒng)失效了。蛋疼的是我現(xiàn)在登錄服務(wù)器的流程變成了:
掏手機(jī)(我的是iPhone)
解鎖,碰上指紋解鎖失敗的情況還需要輸入密碼解鎖
打開Authenticator客戶端,等待Verification Code更新大概1s
記住Verification Code,然后到Mac端輸入
輸入服務(wù)器密碼,登錄...
原本我只執(zhí)行自己搞的一個(gè)命令就完事了,由于我經(jīng)常需要登錄各種不同的服務(wù)器,這種方式對(duì)工作效率的影響是可想而知的。
目前Google官方的客戶端只有Android和iOS的,于是開始找找看有沒有針對(duì)PC,發(fā)現(xiàn)有個(gè)針對(duì)Windows系統(tǒng)的WinAuth支持Google Authenticator,我無論工作、在家基本都用Mac,所以這個(gè)WinAuth我是沒法用了,后來在GitHub上找到一個(gè)MacAuthenticator的工具,下載下來試用了一下基本能用,至少M(fèi)ac端可以得到Verification Code不需要依賴手機(jī)了,但是依然解決不了效率問題,而且那個(gè)工具居然沒法退出...
沒個(gè)順手的工具,看來還得我親手開發(fā)個(gè)了,于是簡單了設(shè)計(jì)了下我需要的功能:
支持從二維碼中直接識(shí)別Authentication Code,也就是otpauth協(xié)議中的那個(gè)secret
支持Authentication Code管理,保存、添加、刪除這些基本功能得有
能夠非常方便的得到我想要的Verification Code
不需要手抄驗(yàn)證碼,點(diǎn)擊自動(dòng)復(fù)制
支持全局快捷鍵直接填充驗(yàn)證碼,不需要麻煩的點(diǎn)鼠標(biāo)(我工作用觸摸板,不用鼠標(biāo),比較依賴鍵盤)
支持在shell腳本中獲取驗(yàn)證碼(只有這樣,才能讓我以前寫的自動(dòng)化工具正常工作)
技術(shù)調(diào)研
GitHub上已經(jīng)有個(gè)MacAuthenticator開源項(xiàng)目了(基于OC的),所以技術(shù)實(shí)現(xiàn)上應(yīng)該沒什么障礙。
語言方面,因?yàn)?4年的時(shí)候參與過《The Swift Programming Language》翻譯(現(xiàn)在已經(jīng)成為蘋果官方指定的中文版本了),但是還從來沒用過Swift,所以決定采用Swift開發(fā),就當(dāng)學(xué)習(xí)了。
otp協(xié)議方面,Google開源了其算法:
網(wǎng)友評(píng)論