跳至主要內容

MFA 受信任裝置 (Trusted devices)

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

受信任裝置 (Trusted device) 並不是新的 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。原生 App 與自訂登入流程應將受信任裝置建立視為盡力而為,並保留傳統 MFA 流程。

管理受信任裝置

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

管理員管理

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

你也可使用 Management API:

  • GET /api/users/{userId}/trusted-devices:列出使用者所有有效受信任裝置。
  • DELETE /api/users/{userId}/trusted-devices/{trustedDeviceId}:移除指定受信任裝置。

回應內容包含 iduserAgentcountrycitycreatedAtlastUsedAtexpiresAt

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;過期 Cookie 於下次呈現時會被拒絕並清除。

自訂帳號中心時,請請求 urn:logto:scope:trusted_devices 權限範圍,並於具有效身分驗證紀錄下使用 Account API:

  • 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]" \
-H "logto-verification-id: [verification-record-id]"

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

請參閱 Account API 參考文件安全性驗證指南 以瞭解授權與驗證流程。

安全模型

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

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

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

稽核日誌與 Webhook

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

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

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

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

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

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

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

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

生命週期備註

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