跳至主要內容

使用 SMS 進行多重要素驗證 (MFA)

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

概念說明

SMS 驗證(也稱為手機號碼驗證)是最易於取得的 MFA 方法之一。它利用行動電話的普及性,直接將臨時一次性驗證碼透過簡訊發送到使用者裝置。與需要額外安裝軟體的應用程式型驗證器不同,SMS MFA 利用每台行動裝置都具備的現有簡訊基礎設施,讓使用者無需任何額外設定即可立即使用。

設定 SMS 作為 MFA 驗證方式

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

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

步驟 2:啟用 SMS 作為 MFA 驗證方式

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

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

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

SMS MFA 設定流程

MFA 設定提示可能出現在使用者註冊時或登入後,具體取決於你設定的 MFA 政策。使用者也可在 帳號設定頁 啟用 SMS MFA。

SMS MFA 設定流程會受到以下因素影響:

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

以下為三種常見 SMS MFA 綁定情境。

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

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

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

範例:

註冊:Email + Email 驗證碼 + 密碼 | MFA:SMS 驗證碼 + 備用碼
SMS MFA 設定流程 1-1

註冊:Email + Email 驗證碼 + 密碼 | MFA:SMS 驗證碼 + 通行密鑰 + 驗證器 App OTP + 備用碼

SMS MFA 設定流程 1-2

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

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

範例:

註冊:手機號碼 + SMS 驗證碼 + 密碼 | MFA:SMS 驗證碼 + 備用碼
SMS MFA 設定流程 2

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

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

範例:

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

SMS MFA 設定流程 3

SMS MFA 驗證流程

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

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

範例:

登入:Email address + 密碼 | MFA:SMS 驗證碼(上次使用)/ 驗證器 App OTP / 備用碼

SMS MFA 驗證流程

錯誤處理

  1. 手機號碼未綁定

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

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

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

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