跳至主要內容

MFA 受信任裝置

MFA 受信任裝置讓使用者在信任的瀏覽器上跳過重複的 MFA 驗證提示。在合格的 MFA 驗證或設定後,使用者可以在登入或註冊流程結束時於獨立的 信任此裝置 (Trust this device) 頁面選擇信任該瀏覽器。Logto 會將一個有時效限制的憑證儲存在第一方 Cookie 中。下次登入時,若憑證有效,便可自動完成 MFA 驗證步驟,無需使用者互動。

受信任裝置不是新的 MFA 因子,也不會改變 Logto 何時要求 MFA。它僅能滿足登入流程中的 MFA 步驟,無法用於身分驗證、近期驗證、帳號復原、MFA 因子管理或其他敏感帳號操作。

受信任裝置的運作方式​

當登入流程進入 MFA 驗證步驟時,Logto 會:

  1. 評估現有的 MFA 原則以決定是否需要 MFA。
  2. 檢查租戶是否啟用受信任裝置,且使用者所屬的每個組織都允許使用。
  3. 針對已識別的使用者,驗證瀏覽器 Cookie 是否對應有效的伺服器端紀錄。
  4. 若憑證有效,自動完成 MFA。否則,Logto 會清除無效憑證並繼續傳統的 MFA 流程。

在登入或註冊時信任裝置​

內建登入體驗會在合格的登入或註冊流程結束時(完成必要的個人資料填寫與 MFA 步驟後),以獨立頁面呈現 信任此裝置 (Trust this device)。在此頁面信任瀏覽器是明確選擇,與 MFA 驗證或設定分開。

僅當租戶啟用受信任裝置、使用者所屬每個組織都允許,且本次互動包含合格的 MFA 驗證證明時,該頁面才會顯示:

  • 使用已啟用的驗證器 App OTP、通行密鑰(WebAuthn)、電子郵件驗證碼或簡訊驗證碼成功通過 MFA 驗證。
  • 在 MFA 設定期間(包含註冊時)成功綁定驗證器 App 或通行密鑰。

密碼重設期間或互動未包含合格的 MFA 證明時,該頁面不會顯示。備用碼驗證或僅有現有受信任裝置憑證時亦不符合資格,因此該頁面不會在每次登入或註冊時出現。先前選擇 略過 (Skip) 也會如下所述隱藏該頁面。

在此頁面,使用者可選擇:

  • 信任此裝置 N 天 (Trust this device for N days):選擇信任,時效為設定的天數。Logto 僅在整個互動成功後建立受信任裝置紀錄與 Cookie 憑證。
  • 略過 (Skip):不建立受信任裝置。略過此頁面不會略過任何必要的 MFA 驗證或設定。

當使用者選擇 略過 (Skip) 時,Logto 會在當前瀏覽器針對該租戶與使用者儲存一個獨立的拒絕 Cookie。其存續時間為當下設定的信任時效。在瀏覽器保留此 Cookie 期間,後續登入不再顯示該頁面。Cookie 過期或被清除後,後續合格流程可再次顯示該頁面。拒絕 Cookie 不會授予裝置信任,也不會通過 MFA。

略過後信任裝置:

若使用者選擇 略過 (Skip) 後又想信任當前瀏覽器,建議在瀏覽器 Cookie 設定或開發者工具中刪除對應 Logto 網域的拒絕 Cookie,其名稱以 __Host-logto-device-trust-opt-out- 開頭。

或可直接清除 Logto 網域的所有 Cookie。

完成上述操作後,重新登入,完成合格的 MFA 驗證或設定,並在頁面出現時選擇 信任此裝置 N 天 (Trust this device for N days)。

受信任裝置建立與登入後的中繼資料更新皆為盡力而為,因此失敗不會導致原本成功的驗證互動失敗。

設定受信任裝置原則​

全域原則​

前往 主控台 > 多重要素驗證 (Multi-factor authentication),設定 受信任裝置 (Trusted devices):

  • 啟用或停用租戶的受信任裝置。預設為停用。
  • 設定信任時效(1 至 365 天的整數),預設為 30 天。

受信任裝置建立時時效即固定。使用裝置不會延長到期時間,變更時效僅影響之後建立的裝置。

停用全域原則會阻止現有受信任裝置通過 MFA,但不會刪除它們。若再次啟用,未過期或未被移除的紀錄可再次使用。

組織層級限制​

組織可針對成員允許或禁止受信任裝置。此設定僅能收緊租戶層級原則:

  • 當全域原則停用時,組織無法啟用受信任裝置。
  • 若使用者所屬任一組織禁止受信任裝置,該使用者的受信任裝置憑證無法通過 MFA,不論該組織是否要求 MFA。
  • 組織無獨立信任時效,採用全域設定。

組織禁止受信任裝置時,受影響成員無法使用,但不會刪除紀錄,也不會阻止使用者或管理員列出或移除它們。

重複使用受信任裝置需瀏覽器情境能保留並回傳同一 Logto 端點的持久第一方 Cookie。這代表的是瀏覽器設定檔,而非實體裝置。

WebView、系統瀏覽器、自訂分頁、隱私模式、停用 Cookie 的瀏覽器及其他暫時性情境,僅在其 Cookie 儲存憑證時可用受信任裝置。若下次登入時 Cookie 不存在,Logto 會繼續傳統 MFA 流程而非驗證失敗。不同瀏覽器、瀏覽器設定檔、Logto 網域、租戶與使用者間不會共用受信任裝置憑證。

備註:

Logto 不會使用瀏覽器指紋辨識,也不會預先偵測用戶端是否會保留 Cookie。原生應用程式與自訂登入流程應將受信任裝置建立視為盡力而為,並保留傳統 MFA 流程。

管理受信任裝置​

僅會列出 expiresAt 在未來的有效紀錄。裝置名稱取自最新的使用者代理字串,國家與城市為最近可用請求情境的近似中繼資料。原始 IP 位址不會顯示或透過公開 API 回傳。

管理員管理​

於 主控台 > 使用者管理 (User management),開啟使用者即可檢視與移除其受信任裝置。移除僅影響未來登入,不會終止使用者現有的登入階段。

你也可以使用 Management API:

  • GET /api/users/{userId}/trusted-devices 列出使用者所有有效受信任裝置。
  • DELETE /api/users/{userId}/trusted-devices/{trustedDeviceId} 移除該使用者擁有的一個受信任裝置。

回應內容包含 id、userAgent、country、city、createdAt、lastUsedAt、expiresAt。

curl https://[tenant-id].logto.app/api/users/[user-id]/trusted-devices \
-H "Authorization: Bearer [management-api-access-token]"

curl -X DELETE \
https://[tenant-id].logto.app/api/users/[user-id]/trusted-devices/[trusted-device-id] \
-H "Authorization: Bearer [management-api-access-token]"

瞭解如何使用 Management API 進行驗證 (Authentication)。

帳號中心自助管理​

於 主控台 > 登入與帳號 > 帳號中心 (Account center),設定 受信任裝置 (Trusted devices) 欄位:

  • 關閉 (Off):使用者無法列出或移除受信任裝置。
  • 唯讀 (Read-only):使用者可列出但無法移除受信任裝置。
  • 可編輯 (Edit):使用者可列出並移除受信任裝置。

預設帳號中心會在安全性頁面顯示有效受信任裝置,當前瀏覽器若憑證完整有效會特別標記。移除當前瀏覽器會清除其受信任裝置 Cookie,但保留現有登入階段。移除其他瀏覽器紀錄無法立即清除該瀏覽器 Cookie;過時 Cookie 於下次呈現時會被拒絕並清除。

自訂帳號中心時,請請求 urn:logto:scope:trusted_devices 權限範圍,並以最近的 urn:logto:acr:1fa 存取權杖呼叫 Account API(參見 OIDC 進階驗證 (Step-up authentication)):

  • GET /api/my-account/trusted-devices 列出已登入使用者的有效受信任裝置,並為每項加上 isCurrent。
  • DELETE /api/my-account/trusted-devices/{trustedDeviceId} 移除已登入使用者擁有的一個受信任裝置。僅第一方應用程式可用。
curl https://[tenant-id].logto.app/api/my-account/trusted-devices \
-H "Authorization: Bearer [account-api-access-token]"

curl -X DELETE \
https://[tenant-id].logto.app/api/my-account/trusted-devices/[trusted-device-id] \
-H "Authorization: Bearer [account-api-access-token]"

請參閱 Account API 參考文件 與 進階驗證 (Step-up authentication) 以瞭解授權流程。

安全模型​

受信任裝置憑證為不透明權杖 (Opaque token),包含兩部分:紀錄 ID 與加密隨機 32 位元組密鑰。

  • 正式環境下,Logto 以 __Host- 前綴、HttpOnly、Secure、SameSite=Lax、Path=/ 屬性將其存於僅限主機的 Cookie。應用程式 JavaScript 無法讀取。
  • 伺服器僅儲存密鑰的 SHA-256 雜湊值,並以時序安全方式比對憑證。
  • 每次憑證查詢皆限定於租戶與使用者,且需 expiresAt 尚未過期。
  • 到期時間於建立時即固定。過期資料可後續清理,但清理時機不作為安全控制。
  • 明確移除會立即刪除伺服器端紀錄。複製或過時的 Cookie 在紀錄移除後無法通過驗證。

憑證密鑰與雜湊值不會透過 UI、公開 API、稽核日誌或 Webhook 曝露。公開裝置 ID 並非實體裝置識別碼,亦不足以驗證。由於 Cookie 為持有者憑證,複製完整 Cookie 可在紀錄未過期或未被移除前重播信任;受信任裝置不提供硬體級裝置驗證。

稽核日誌與 Webhook​

受信任裝置專屬稽核日誌包含:

  • TrustedDevice.Created:成功互動後建立受信任裝置紀錄與 Cookie 憑證。
  • TrustedDevice.Used:受信任裝置憑證通過 MFA 並成功完成登入。

你可訂閱以下資料變更 Webhook:

  • TrustedDevice.Created:建立受信任裝置紀錄。
  • TrustedDevice.Deleted:使用者或管理員移除受信任裝置紀錄。

事件資料包含受信任裝置 id、userId、expiresAt,不含 Cookie 憑證、密鑰雜湊與請求 IP。為避免事件量過大,成功使用不會發送 Webhook,原則變更亦不會產生受信任裝置生命週期事件,因為這些操作不會變更紀錄。

自然到期不會有 TrustedDevice.Expired Webhook。到期發生於時間流逝而非應用程式操作,實體清理可能稍後進行。若整合需推算預期到期時間,請使用 TrustedDevice.Created 的 expiresAt。

自然到期也不會產生受信任裝置專屬稽核日誌。

請參閱 稽核日誌事件類型 與 Webhook 事件 以取得事件目錄。

生命週期備註​

  • 正常登出不會移除受信任裝置。
  • 新增、移除或重設 MFA 因子不會移除受信任裝置。
  • 移除受信任裝置不會終止現有登入階段。
  • 刪除使用者會依據使用者資料生命週期刪除其受信任裝置紀錄。
  • 無受信任裝置數量上限或自動逐出機制。