2012-08-08 54 views
1

我正在尋找將Google身份驗證器應用於CakePHP應用程序。訣竅是用戶可以確定他們是否想使用它。這意味着如果用戶使用多部分登錄,他們將通常使用其用戶名和密碼登錄。成功提交正確的用戶名/密碼組合後,他們需要重定向到要求Google Authenticator獲得其密碼的頁面。CakePHP的Google身份驗證器多部分(TOTP)登錄實現

如何限制認證成功,直到他們輸入密碼後?我可以做重定向,一切就好了,但如果他們退出的密碼形式,去到現場,他們用自己的用戶名/密碼已經認證,他們可以通過網站就好了導航。

我需要關於如何關閉認證的一些指導,直到密碼確認成功後。有任何想法嗎?

回答

2

我注意到這個問題是很老的和沒有答覆,我也相似,所以我將分享我的兩分錢的東西工作。希望你現在已經解決了這個問題。

你的用戶管理系統應提供整個登錄過程中只完成後的會話密鑰,這意味着你應該讓用戶在他們完成所有步驟都提供權威性的數據之後。

  1. 收到用戶名和密碼
  2. 支票憑證和身份驗證選項
  3. 如果憑據是確定並沒有啓用谷歌驗證,給他的會話密鑰,否則重試
  4. 如果credetials是確定並啓用谷歌驗證,通過$ _ POST [「用戶」]挑戰形式
  5. 如果TOTP密碼與服務器端的檢查,返回會話密鑰,否則重試
$_POST[] ----> loginCheck() ----> if(GAuth) ----> checkTotp() ----> sessionKey 
             |         | 
             *---------------------------------* 

loginCheck()應檢查用戶和密碼都OK,否則拒絕訪問

如果(GAuth)應返回true或false,depeding如果你的用戶使用GAuth

checkTotp應在客戶端和服務器上檢查TOTP密碼的方法

sessionKey應該是用於訪問受保護內容,存儲服務器端和客戶端一段時間的令牌

或者適應這種想法你的需要......在我看來,你應該接受的時候,他通過了所有的認證試驗系統中的用戶。

你可以讓用戶表單hols用戶名/密碼和密碼,然後一次處理所有數據,並避免兩頁。

瞭解更多關於https://tools.ietf.org/html/rfc6238

+0

這基本上是我終於實現了。感謝發佈! – 2013-01-16 19:46:00

+0

好吧,祝你有個愉快的一天 – 2013-01-16 19:48:06