繁體中文(台灣)
  • 404-not-found
  • logto-unknown-session
  • authorization-code-flow

為什麼在登入 Logto 整合應用程式時可能會看到 404

你是否曾在嘗試登入 Logto 整合應用程式時遇到「404 Not Found」錯誤?這篇部落格文章解釋了為什麼會發生這種情況,以及如何避免它。

Charles
Charles
Developer

不要在使用者認證上浪費數週時間
使用 Logto 更快地發布安全應用程式。幾分鐘內整合使用者認證,專注於您的核心產品。
立即開始
Product screenshot

背景

你是否曾嘗試登入使用 Logto 進行身份驗證的應用程式時遇到「404 not found」錯誤?你的最終用戶是否也報告過這個問題?

Logto session not found 404 error screenshot

當你直接訪問登入頁面(例如,https://your-app.com/sign-in),而不是通過應用程式預期的登入流程,這種情況可能會發生。

原因如下:

OIDC 流程的重要性

Logto 依賴 OpenID Connect (OIDC) 協議 進行安全驗證。當你通過正常應用程式流(例如,通常是點擊應用程式中的登入按鈕)登入時,應用程式會與 Logto 的 OIDC 伺服器進行通信。這種通信稱為「授權請求」,非常重要,因為它首先對呼叫者進行了各種驗證,然後在你的瀏覽器和伺服器(由 Cookie 管理)之間建立了一個安全會話。

問題出在用戶直接導航到「/sign-in」頁面時,這繞過了應用程式內部的邏輯,未觸發 OIDC 授權請求。因此,伺服器無法識別你的瀏覽器有有效的會話,導致 404 錯誤。

解決方案

主要有兩種方法可以避免這個問題:

總是使用應用程式的登入按鈕

不要直接訪問「/sign-in」頁面,而是遵循應用程式提供的預定登入流程。當你在應用程式中點擊「Sign in」按鈕時,它會啟動正確的 OIDC 授權請求並建立必要的會話。

自動重定向用戶

如果你的 Logto 實例中只有一個應用程式,你可以嘗試實施邏輯,自動攔截用戶在沒有有效會話的情況下訪問「/sign-in」頁面的嘗試,並將他們重定向回顯示登入按鈕的主頁。由於 Logto 的「Omni-sign-in」性質,這無法由 Logto 完成,因為多個應用程式可以共用相同的身份驗證系統,當這種頁面請求進來時,Logto 不知道應該重定向到哪個應用程式。

關於體驗改善的額外思考

我們正在嘗試改善用戶體驗,至少在「/unknown-session」頁面上添加幫助信息,解釋 404 的原因並讓用戶知道該怎麼做,而不是感到困惑和無從下手。

我們也可能考慮實施其他安全措施以緩解這個問題,例如當為當前 Logto 實例檢測到只有一個應用程式時,自動重定向到「Sign-out redirect URI」(通常是應用程式的主頁),或在這種情況下顯示自定義消息的額外配置。

結論

在「/sign-in」頁面出現的 404 not found(無效會話)錯誤通常是由於直接訪問登入頁面 URL,這繞過了應用程式正常的登入流程,未能觸發授權請求,因此沒有建立有效的會話(由 Cookie 管理)。

通過理解這個流程及其重要性,你可以避免錯誤,並享受與 Logto 整合應用程式的無縫登入體驗。

如果你想分享你的想法,請隨時與我們聯繫。