Keycloak 實現 MFA
Table of contents
背景
Keycloak 怎麼實現MFA?
可行方案
Keycloak 的多因素驗證(MFA)可以透過 Authenticator 機制來實現,支援的 MFA 方式包括:
- OTP(一次性密碼)
- TOTP(基於時間的 OTP):使用 Google Authenticator、Microsoft Authenticator、FreeOTP 等應用程式生成驗證碼。
- HOTP(基於計數器的 OTP):較少使用。
- WebAuthn(FIDO2)
- 允許使用 指紋、Windows Hello、YubiKey 等生物辨識或硬體金鑰驗證。
- Recovery Codes(備用驗證碼)
- 使用者可以預先產生一組備用驗證碼,當其他 MFA 方式無法使用時可作為替代方案。
- 推播通知(需額外整合)
- Keycloak 本身沒有內建推播 MFA,但可以透過外部服務(如 Duo Security)來實現。
設定 Keycloak MFA
1. 開啟 MFA 驗證
1. 登入 Keycloak 管理介面。
2. 選擇你的 Realm(領域)。
3. 在左側選單中點選 Authentication > Flows。
4. 找到 Browser 流程,點選 Actions > Copy(建立一個可編輯的流程)。
5. 在新建的流程中,點選 Add execution,選擇 OTP Form,然後點選 Required。
2. 設定 MFA 規則
1. 進入 Authentication > Required Actions,啟用 Configure OTP。
2. 進入 Authentication > OTP Policy,設定 OTP 的演算法、有效時間、碼長(通常 6 位數)等。
3. 測試 MFA
1. 使用普通帳號登入,會跳出 設定 MFA 的畫面。
2. 掃描 QR Code(使用 Google Authenticator 或 FreeOTP)。
3. 輸入 OTP 驗證碼完成設定。
之後,使用者每次登入時都需要輸入 OTP,才可完成身份驗證。
進階應用
- 強制特定使用者群組啟用 MFA:可以使用 條件性流程(Conditional Flow),讓特定群組(如 Admin)必須使用 MFA。
- 允許使用 WebAuthn(FIDO2):在 Authentication Flows 新增 WebAuthn Authenticator,並啟用 WebAuthn 設定。
- 整合外部 MFA 服務(如 Duo Security):透過 Keycloak 外掛程式來支援 Duo Push 通知驗證。
這樣,你就能在 Keycloak 上成功啟用 MFA,提升登入安全性!