顯示具有 2FA 標籤的文章。 顯示所有文章
顯示具有 2FA 標籤的文章。 顯示所有文章

2023/08/30

Laravel 9 Google 2FA(Two-factor authentication)

2FA全名為「Two-factor authentication」,中文稱為「雙重驗證」
兩種不同的元素,合併在一起,來確認使用者的身分。
有兩種密碼演算法
HOTP(HMAC-based One-time Password),RFC4226
金鑰和隨機資訊雜湊後,取N個字作為密碼
TOTP(Time-Based One-Time Password),RFC6238
透過時間來產生一次性密碼
邏輯如下:
呼叫API時先進到Verify2FA這個Middleware
檢查是否有使用帳號密碼登入過,沒有則讓他呼叫API
登入後如果2FA金鑰為空,回傳錯誤訊息,讓Front-End轉跳到顯示QRCode頁面
進入頁面呼叫get2FAQRCodeUrl,Front-End將URL轉成QRCode Image,接著使用者掃完後下一步
開始驗證2FA,驗證通過在Session儲存twoFAChecked為true
登入後如果還沒驗證過2FA,回傳錯誤訊息,讓Front-End轉跳到顯示輸入2FA驗證頁面
登出後將Session清空
首先安裝google2fa-laravel套件
composer require pragmarx/google2fa-laravel