简体中文
  • 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 错误截图

当你直接访问登录页面(例如,https://your-app.com/sign-in),而没有通过应用程序的预期登录流程时,就可能会发生这种情况。

原因如下:

OIDC 流的重要性

Logto 依赖于 OpenID Connect (OIDC) 协议 来实现安全身份验证。当你通过正常的应用流程登录(例如,通常通过点击应用程序中的登录按钮),应用程序会与 Logto 的 OIDC 服务器进行通信。这种名为“授权请求”的通信 是重要的,因为它首先对调用者进行各种验证,然后在你的浏览器和服务器之间建立一个安全会话(由 cookie 管理)。

当用户直接导航到“/sign-in”页面时,会跳过触发 OIDC 授权请求的应用程序内部逻辑,因此服务器不承认你的浏览器拥有有效会话,这就导致了 404 错误。

解决方案

有两种主要的方法可以避免这个问题:

始终使用应用的登录按钮

请按照应用程序提供的登录流程,而不是直接访问“/sign-in”页面。点击应用内的“登录”按钮时,会发起正确的 OIDC 授权请求,从而建立必要的会话。

自动重定向用户

如果你的 Logto 实例中只有一个应用程序,你可以尝试实现逻辑,自动拦截未拥有有效会话而访问“/sign-in”页面的用户,并将他们重定向回显示登录按钮的主页面。由于 Logto 的“Omni-sign-in”特性,无法实现这种重定向,因为多个应用程序可以共享同一身份验证系统,当有此类页面请求时,Logto 不知道应该重定向到哪个应用程序。

关于改善体验的额外思考

我们正努力改进用户体验,至少在“/unknown-session”页面上添加帮助信息,解释造成 404 的原因,并让用户知道该怎么做,而不是感到困惑和无所适从。

我们还可能考虑实施其他安全措施来减轻问题,例如,当在当前 Logto 实例中只检测到一个应用时,自动重定向到 “登录重定向 URI”(通常是应用程序的主页),或者在这种情况下添加额外配置以显示自定义消息。

结论

“/sign-in”页面上的“404 not found”(无效会话)错误通常是由于直接访问登录页面 URL 导致的,这样会跳过触发授权请求的正常应用登录流程,因此未建立有效会话(由 cookie 管理)。

通过了解此流程及其重要性,你可以避免该错误,享受与 Logto 整合的应用程序的无缝登录体验。

欢迎随时与我们联系以分享你的想法。