為什麼你在登入 Logto 整合應用程式時可能會見到 404?
你有沒有試過在登入一個整合了 Logto 的應用程式時遇到「404 Not Found」錯誤?這篇博客會解釋為什麼會發生這種情況以及你可以怎樣避免它。
背景
你有沒有試過在使用 Logto 作為認證的應用程式登入時遇到「404 not found」錯誤?你的終端用戶有沒有向你報告過同樣的問題?

這種情況通常發生於你直接存取登入頁面(例如 https://your-app.com/sign-in
),而沒有經過應用程式設計好的登入流程時。
原因如下:
OIDC 流程的重要性
Logto 依賴 OpenID Connect (OIDC) 協議 進行安全認證。當你按照一般流程(例如從應用程式點擊登入按鈕)登入時,應用程式會向 Logto 的 OIDC 伺服器發起通訊。這個稱為「授權請求」的通訊很重要,因為它首先會對呼叫者進行各種驗證,並在你的瀏覽器與伺服器之間建立安全的 Session(用 cookies 管理)。
問題在於當用戶直接跳去「/sign-in」頁面時,這會繞過應用程式內部觸發 OIDC 授權請求的邏輯。因此,伺服器無法確認你的瀏覽器有有效的 Session,就會出現 404 錯誤。
解決方法
有兩個主要方法可以避免這種問題:
永遠使用應用程式的登入按鈕
不要直接進入「/sign-in」頁面,應該按照應用程式提供的登入流程。當你在應用程式內點擊「登入」按鈕,會正確發起 OIDC 授權請求,並建立所需的 Session。
自動重定向用戶
如果你的 Logto 實例只連接了一個應用程式,可以考慮加入邏輯,自動截取直接進入「/sign-in」頁而沒有有效 Session 的用戶,然後重定向回顯示登入按鈕的主頁。
為了解決這個問題,Logto 引入了「Unknown session redirect URL」設定。你只要設定這個 URL,Logto 就會自動把用戶重定向到指定的頁面,而不會顯示 404 錯誤。舉個例子,你可以把用戶導向應用程式首頁或自定的登入畫面。重定向之後,你的客戶端應用程式應重新啟動一個登入流程。
你可以在 Logto Console 的 Logto Cloud > 登入體驗 > 註冊和登入 > 進階選項 裡面設定這個後備 URL。
例如,Logto Cloud 就設定為 https://cloud.logto.io/
。一旦設定好,沒有有效 Session 而進入 /sign-in
的用戶都會被導到這個 URL,重新開始登入。
關於體驗提升的額外思考
我們正努力改善用戶體驗,例如在「/unknown-session」頁面加入有用的提示訊息,解釋 404 的原因,讓用戶知道下一步要怎樣做,不致於一頭霧水。例如 Logto 支援在登入錯誤頁面顯示你設定的支援電郵和網站地址,用戶遇到問題時就能聯絡你求助。
我們也會考慮實現其他安全措施來減少這方面的問題,例如在只有一個應用時自動重定向到「Sign-out redirect URI」(通常是應用主頁),或者加入額外設定讓你在這些情況下顯示自定訊息。
總結
「/sign-in」頁面的 404 not found(無效 Session)錯誤,多數是因為直接存取登入頁 URL,繞過了會發起授權請求的正常登入流程,因此沒有建立有效的(用 cookies 管理的)Session。
明白這個流程及其重要性,就可以避開這個錯誤,享受流暢的 Logto 應用登入體驗。
如果你有想法,也歡迎隨時聯絡我們分享。