MFA 受信任裝置
MFA 受信任裝置讓使用者在信任的瀏覽器上跳過重複的 MFA 驗證提示。在合格的 MFA 驗證或設定後,使用者可以在登入或註冊流程結束時於獨立的 信任此裝置 (Trust this device) 頁面選擇信任該瀏覽器。Logto 會將一個有時效限制的憑證儲存在第一方 Cookie 中。下次登入時,若憑證有效,便可自動完成 MFA 驗證步驟,無需使用者互動。
受信任裝置不是新的 MFA 因子,也不會改變 Logto 何時要求 MFA。它僅能滿足登入流程中的 MFA 步驟,無法用於身分驗證、近期驗證、帳號復原、MFA 因子管理或其他敏感帳號操作。
受信任裝置的運作方式
當登入流程進入 MFA 驗證步驟時,Logto 會:
- 評估現有的 MFA 原則以決定是否需要 MFA。
- 檢查租戶是否啟用受信任裝置,且使用者所屬的每個組織都允許使用。
- 針對已識別的使用者,驗證瀏覽器 Cookie 是否對應有效的伺服器端紀錄。
- 若憑證有效,自動完成 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。
- 組織無獨立信任時效,採用全域設定。
組織禁止受信任裝置時,受影響成員無法使用,但不會刪除紀錄,也不會阻止使用者或管理員列出或移除它們。
瀏覽器與 Cookie 限制
重複使用受信任裝置需瀏覽器情境能保留並回傳同一 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 因子不會移除受信任裝置。
- 移除受信任裝置不會終止現有登入階段。
- 刪除使用者會依據使用者資料生命週期刪除其受信任裝置紀錄。
- 無受信任裝置數量上限或自動逐出機制。