跳至主要內容

MFA 的簡訊驗證 (SMS verification for MFA)

Logto 支援基於簡訊的多重要素驗證 (MFA, Multi-factor authentication) 功能,透過向使用者註冊的手機號碼發送一次性驗證碼來提升帳號安全性。簡訊 MFA 作為第二驗證因素,可與其他 MFA 因素(如 TOTP、通行密鑰、備用代碼)結合,為使用者提供彈性的雙重驗證選項。

概念

簡訊驗證(SMS verification),又稱手機號碼驗證(Phone Number verification),是最易於存取的 MFA 方法之一。它利用手機的普及性,直接將臨時的一次性驗證碼透過簡訊發送到使用者裝置。與需要額外安裝軟體的應用程式型驗證器不同,簡訊 MFA 利用每支手機都內建的訊息傳送基礎設施,讓使用者無需任何額外設定即可立即使用。

設定 MFA 的簡訊驗證

步驟 1:設定簡訊連接器與範本

  1. 前往 主控台 > 連接器 > 電子郵件與簡訊連接器
  2. 選擇合適的簡訊連接器(Twilio、SMS Aero 等)
  3. 設定連線參數
  4. 針對 MFA 設定專用用途的簡訊範本
    • MfaVerification usageType 用於 MFA 驗證
    • BindMFA usageType 用於綁定 MFA
  5. 測試連接器功能,確保訊息可正常發送
  6. 參考 簡訊連接器 取得各供應商的詳細設定說明

步驟 2:啟用 MFA 的簡訊驗證

  1. 前往 主控台 > 多重要素驗證
  2. 啟用「簡訊驗證碼」因素。建議將簡訊 MFA 與其他 MFA 因素(TOTP、通行密鑰、備用代碼)搭配使用,以降低單一因素依賴。
  3. 設定偏好的 MFA 政策(必須 / 選擇性)
  4. 儲存設定變更
重要使用注意事項:
  1. 登入方式限制:簡訊驗證碼不可同時作為 登入方式(1FA) 與 MFA 因素(2FA)使用。每個簡訊驗證流程僅能選擇一種驗證用途。

  2. 註冊方式相容性:簡訊驗證碼可同時用於註冊方式與 MFA。Logto 會根據你選擇的 MFA 政策最佳化終端使用者註冊流程,避免同一手機號碼需重複簡訊驗證。

  3. 密碼重設相容性:雖然簡訊驗證碼可同時用於 忘記密碼 與 MFA,但不建議這樣配置。此組合會降低 MFA 的安全性,因為使用者可能透過忘記密碼的簡訊驗證重設密碼,然後用新密碼進行主驗證(1FA),再用相同簡訊方式進行 MFA 驗證,進而繞過 MFA。

簡訊 MFA 綁定流程

MFA 設定提示可能出現在使用者註冊時或登入後,具體時機取決於你設定的 MFA 政策

簡訊 MFA 綁定流程會受到以下因素影響:

  • MFA 主要因素數量:若有多個主要因素,使用者需選擇一個進行設定。主要因素指除備用代碼外的 MFA 方法。
  • 啟用備用代碼:啟用時,設定完主要 MFA 因素後會自動產生備用代碼,並提示使用者儲存。
  • 註冊識別子設定:若手機號碼作為 註冊識別子 並於註冊時已用簡訊驗證碼驗證,系統會自動將該號碼綁定為 MFA 因素,無需再次驗證。若有其他主要因素,UI 會顯示「新增其他兩步驟驗證」選項(可略過),並明確標示 MFA 已啟用。
  • 現有使用者資料:現有使用者登入後設定 MFA 時,需先完成主驗證,再進行 MFA 設定。若帳號已有已驗證的主要手機號碼,流程與上述註冊識別子情境相同。

以下為三種常見的簡訊 MFA 綁定情境。

情境 1:手機號碼僅用於 MFA(典型流程)

當手機號碼不是註冊識別子,僅用於 MFA 時,請依標準設定流程操作:

  • 若僅有一個簡訊 MFA 因素,直接顯示該因素的設定 UI。
  • 若有多個主要 MFA 因素,顯示「設定 MFA」列表頁,讓使用者選擇要設定哪一個因素。

範例:

註冊:電子郵件 + 電子郵件驗證碼 + 密碼 | MFA:簡訊驗證碼 + 備用代碼
SMS MFA setup flow 1-1

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

SMS MFA setup flow 1-2

情境 2:手機號碼作為註冊識別子並已驗證

若手機號碼為註冊識別子,且使用者於註冊時已用簡訊驗證碼驗證,系統會自動將該號碼綁定為 MFA 因素,無需額外驗證。

範例:

註冊:手機號碼 + 簡訊驗證碼 + 密碼 | MFA:簡訊驗證碼 + 備用代碼
SMS MFA setup flow 2

情境 3:手機號碼已驗證但有多個主要因素

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

範例:

註冊:手機號碼 + 簡訊驗證碼 + 密碼 | MFA:簡訊驗證碼 + 通行密鑰 + 驗證器 App OTP + 備用代碼

SMS MFA setup flow 3

簡訊 MFA 驗證流程

啟用簡訊 MFA 的使用者登入時,完成主驗證(1FA)後,系統會提示其以簡訊驗證碼作為第二驗證因素(2FA)驗證身分。

若有多個 MFA 因素,使用者可從已設定的因素中選擇。系統會依據 MFA 設定 中指定的優先順序決定先提示哪個 MFA 因素。

範例:

登入:電子郵件地址 + 密碼 | MFA:簡訊驗證碼(上次使用)/ 驗證器 App OTP / 備用代碼

SMS MFA verification flow

錯誤處理

  1. 手機號碼未綁定

    • 錯誤代碼:session.mfa.mfa_factor_not_enabled
    • 處理方式:引導使用者先綁定手機號碼
  2. 驗證碼錯誤

    • 錯誤代碼:verification_code.code_mismatch
    • 處理方式:提示使用者重新輸入,限制重試次數
  3. 驗證碼過期

    • 錯誤代碼:verification_code.expired
    • 處理方式:提示使用者重新取得驗證碼
  4. 發送頻率超限

    • 錯誤代碼:connector.rate_limit_exceeded
    • 處理方式:顯示等待時間,限制重發次數