2013-01-06 19 views
1

我試圖在我正在編寫的Symfony2應用程序中實現雙因素認證方案。基本上,系統目前正常工作,以Doctrine ORM實體作爲用戶提供者。但是,我正在想辦法解決如何正確和最有效地添加這個問題。兩步認證

基本上,認證應該如此工作。 用戶看到登錄表單。鍵入用戶/密碼組合,然後輸入OTP(在這種情況下爲yubikey)。

標準symfony2身份驗證處理用戶/密碼就好了。但是,我想添加添加OTP支持的選項(假設用戶有一個yubikey的數據庫條目,並且它在全網範圍內啓用。)

有沒有人有過這種模式的運氣?我想避免重蹈覆轍,只需要弄清楚如何將其與當前的身份驗證架構聯繫起來。

最初,我曾想過在我使用的自定義密碼編碼器(bcrypt)中使用isPasswordValid()函數。但是,似乎沒有辦法將otp傳遞給該函數。

回答

1

您需要編寫一個自定義身份驗證提供程序(我假設您使用的是基於默認實體的提供程序),該身份驗證提供程序包含OTP相關邏輯。我不打算在這裏複製和粘貼Symfony的例子,但是他們的documentation有一個供參考。

+0

我很害怕。我認爲這將是我必須採取的路線。我只是討厭'重塑'已經存在的東西。普通的身份驗證提供程序工作正常。是的,我正在使用默認的基於實體的提供者。 – Dameon87

+0

嗨,你是否實現了自己的身份驗證提供程序,或者你是否以不同的方式解決了這個問題? – Tom