MFA 的簡訊驗證 (SMS verification for MFA)
Logto 支援基於簡訊的多重要素驗證 (MFA, Multi-factor authentication) 功能,透過向使用者註冊的手機號碼發送一次性驗證碼來提升帳號安全性。簡訊 MFA 作為第二驗證因素,可與其他 MFA 因素(如 TOTP、通行密鑰、備用代碼)結合,為使用者提供彈性的雙重驗證選項。
概念
簡訊驗證(SMS verification),又稱手機號碼驗證(Phone Number verification),是最易於存取的 MFA 方法之一。它利用手機的普及性,直接將臨時的一次性驗證碼透過簡訊發送到使用者裝置。與需要額外安裝軟體的應用程式型驗證器不同,簡訊 MFA 利用每支手機都內建的訊息傳送基礎設施,讓使用者無需任何額外設定即可立即使用。
設定 MFA 的簡訊驗證
步驟 1:設定簡訊連接器與範本
- 前往 主控台 > 連接器 > 電子郵件與簡訊連接器
- 選擇合適的簡訊連接器(Twilio、SMS Aero 等)
- 設定連線參數
- 針對 MFA 設定專用用途的簡訊範本
MfaVerification
usageType 用於 MFA 驗證BindMFA
usageType 用於綁定 MFA
- 測試連接器功能,確保訊息可正常發送
- 參考 簡訊連接器 取得各供應商的詳細設定說明
步驟 2:啟用 MFA 的簡訊驗證
- 前往 主控台 > 多重要素驗證
- 啟用「簡訊驗證碼」因素。建議將簡訊 MFA 與其他 MFA 因素(TOTP、通行密鑰、備用代碼)搭配使用,以降低單一因素依賴。
- 設定偏好的 MFA 政策(必須 / 選擇性)
- 儲存設定變更
簡訊 MFA 綁定流程
MFA 設定提示可能出現在使用者註冊時或登入後,具體時機取決於你設定的 MFA 政策。
簡訊 MFA 綁定流程會受到以下因素影響:
- MFA 主要因素數量:若有多個主要因素,使用者需選擇一個進行設定。主要因素指除備用代碼外的 MFA 方法。
- 啟用備用代碼:啟用時,設定完主要 MFA 因素後會自動產生備用代碼,並提示使用者儲存。
- 註冊識別子設定:若手機號碼作為 註冊識別子 並於註冊時已用簡訊驗證碼驗證,系統會自動將該號碼綁定為 MFA 因素,無需再次驗證。若有其他主要因素,UI 會顯示「新增其他兩步驟驗證」選項(可略過),並明確標示 MFA 已啟用。
- 現有使用者資料:現有使用者登入後設定 MFA 時,需先完成主驗證,再進行 MFA 設定。若帳號已有已驗證的主要手機號碼,流程與上述註冊識別子情境相同。
以下為三種常見的簡訊 MFA 綁定情境。
情境 1:手機號碼僅用於 MFA(典型流程)
當手機號碼不是註冊識別子,僅用於 MFA 時,請依標準設定流程操作:
- 若僅有一個簡訊 MFA 因素,直接顯示該因素的設定 UI。
- 若有多個主要 MFA 因素,顯示「設定 MFA」列表頁,讓使用者選擇要設定哪一個因素。
範例:
註冊:電子郵件 + 電子郵件驗證碼 + 密碼
| MFA:簡訊驗證碼 + 備用代碼

註冊:電子郵件 + 電子郵件驗證碼 + 密碼
| MFA:簡訊驗證碼 + 通行密鑰 + 驗證器 App OTP + 備用代碼
電子郵件 + 電子郵件驗證碼 + 密碼
| MFA:簡訊驗證碼 + 通行密鑰 + 驗證器 App OTP + 備用代碼

情境 2:手機號碼作為註冊識別子並已驗證
若手機號碼為註冊識別子,且使用者於註冊時已用簡訊驗證碼驗證,系統會自動將該號碼綁定為 MFA 因素,無需額外驗證。
範例:
註冊:手機號碼 + 簡訊驗證碼 + 密碼
| MFA:簡訊驗證碼 + 備用代碼

情境 3:手機號碼已驗證但有多個主要因素
若手機號碼於註冊時已驗證(作為註冊識別子),但帳號有多個主要 MFA 因素(如簡訊加通行密鑰或驗證器 App),UI 會提示「新增其他兩步驟驗證」。使用者可選擇新增其他因素或略過,提示同時也會說明 MFA 已啟用。
範例:
註冊:手機號碼 + 簡訊驗證碼 + 密碼
| MFA:簡訊驗證碼 + 通行密鑰 + 驗證器 App OTP + 備用代碼
手機號碼 + 簡訊驗證碼 + 密碼
| MFA:簡訊驗證碼 + 通行密鑰 + 驗證器 App OTP + 備用代碼

簡訊 MFA 驗證流程
啟用簡訊 MFA 的使用者登入時,完成主驗證(1FA)後,系統會提示其以簡訊驗證碼作為第二驗證因素(2FA)驗證身分。
若有多個 MFA 因素,使用者可從已設定的因素中選擇。系統會依據 MFA 設定 中指定的優先順序決定先提示哪個 MFA 因素。
範例:
登入:電子郵件地址 + 密碼
| MFA:簡訊驗證碼(上次使用)/ 驗證器 App OTP / 備用代碼
電子郵件地址 + 密碼
| MFA:簡訊驗證碼(上次使用)/ 驗證器 App OTP / 備用代碼

錯誤處理
-
手機號碼未綁定
- 錯誤代碼:
session.mfa.mfa_factor_not_enabled
- 處理方式:引導使用者先綁定手機號碼
- 錯誤代碼:
-
驗證碼錯誤
- 錯誤代碼:
verification_code.code_mismatch
- 處理方式:提示使用者重新輸入,限制重試次數
- 錯誤代碼:
-
驗證碼過期
- 錯誤代碼:
verification_code.expired
- 處理方式:提示使用者重新取得驗證碼
- 錯誤代碼:
-
發送頻率超限
- 錯誤代碼:
connector.rate_limit_exceeded
- 處理方式:顯示等待時間,限制重發次數
- 錯誤代碼: