Google Authenticator是一個類似U盾的二次驗證工具,Google提供了它的開源客戶端(https://github.com/google/google-authenticator)里面有完整的客戶端代碼,
實現Google Authenticator功能需要服務器端和客戶端的支持。服務器端負責密鑰的生成、驗證一次性密碼是否正確。客戶端記錄密鑰后生成一次性密碼,
主要的實現原理就是使用密鑰+時間戳的方式在服務器端和客戶端采取相同的算法計算出一個數字用戶輸入這個數字和服務器對比相同就通過驗證,其中最重要的就是密鑰,
(如果算法相同、密鑰相同,又是同一個時間(時間戳相同),那么客戶端和服務器計算出的一次性密碼是一樣的。服務器驗證時如果一樣,就登錄成功了。)
google並沒有提供接入api文檔是想由接入方根據客戶端的算法自己編碼實現服務端功能,這樣自己的平台保存着自己的密鑰,相對來說安全些,不用擔心存在別人的數據庫中。
有一些資料已經解釋了其中的實現原理
https://www.zhihu.com/question/20462696
也有一些已經接入Google驗證器的應用
http://www.appinn.com/10-two-factor-authentication/