最近運維同學為了提高安全性,用Google Authenticator對服務器加了雙重認證,此后登錄服務器需要先輸入動態(tài)密碼,在輸入服務器密碼。Google Authenticator相當于軟token,對他不了解的同學可以看下這篇文章:谷歌驗證 (Google Authenticator) 的實現(xiàn)原理是什么?。

運維同學的出發(fā)點是好的,但是我原來寫的各種自動登錄服務器的腳本統(tǒng)統(tǒng)失效了。蛋疼的是我現(xiàn)在登錄服務器的流程變成了:

  1. 掏手機(我的是iPhone)

  2. 解鎖,碰上指紋解鎖失敗的情況還需要輸入密碼解鎖

  3. 打開Authenticator客戶端,等待Verification Code更新大概1s

  4. 記住Verification Code,然后到Mac端輸入

  5. 輸入服務器密碼,登錄...

原本我只執(zhí)行自己搞的一個命令就完事了,由于我經常需要登錄各種不同的服務器,這種方式對工作效率的影響是可想而知的。

目前Google官方的客戶端只有Android和iOS的,于是開始找找看有沒有針對PC,發(fā)現(xiàn)有個針對Windows系統(tǒng)的WinAuth支持Google Authenticator,我無論工作、在家基本都用Mac,所以這個WinAuth我是沒法用了,后來在GitHub上找到一個MacAuthenticator的工具,下載下來試用了一下基本能用,至少Mac端可以得到Verification Code不需要依賴手機了,但是依然解決不了效率問題,而且那個工具居然沒法退出...

沒個順手的工具,看來還得我親手開發(fā)個了,于是簡單了設計了下我需要的功能:

  1. 支持從二維碼中直接識別Authentication Code,也就是otpauth協(xié)議中的那個secret

  2. 支持Authentication Code管理,保存、添加、刪除這些基本功能得有

  3. 能夠非常方便的得到我想要的Verification Code

  • 不需要手抄驗證碼,點擊自動復制

  • 支持全局快捷鍵直接填充驗證碼,不需要麻煩的點鼠標(我工作用觸摸板,不用鼠標,比較依賴鍵盤)

  • 支持在shell腳本中獲取驗證碼(只有這樣,才能讓我以前寫的自動化工具正常工作)

技術調研

GitHub上已經有個MacAuthenticator開源項目了(基于OC的),所以技術實現(xiàn)上應該沒什么障礙。

語言方面,因為14年的時候參與過《The Swift Programming Language》翻譯(現(xiàn)在已經成為蘋果官方指定的中文版本了),但是還從來沒用過Swift,所以決定采用Swift開發(fā),就當學習了。

otp協(xié)議方面,Google開源了其算法:

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式