한국어
  • 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 세션을 찾을 수 없는 404 오류 스크린샷

이 문제는 앱에서 제공하는 정상 로그인 흐름을 통하지 않고 직접 로그인 페이지에 접근할 때 (예: https://your-app.com/sign-in) 발생할 수 있습니다.

이유는 다음과 같습니다:

OIDC 흐름의 중요성

Logto 는 안전한 인증을 위해 OpenID Connect (OIDC) 프로토콜에 의존합니다. 일반적인 앱 흐름(예: 앱 내에서 로그인 버튼 클릭)으로 로그인할 때, 애플리케이션이 Logto 의 OIDC 서버와 통신을 시작합니다. 이 통신은 “인가 요청”이라고 하며, 여러 검증 절차를 거친 뒤 브라우저와 서버 간의 안전한 세션(쿠키로 관리됨)을 생성합니다.

문제는 사용자가 직접 “/sign-in” 페이지로 이동하면, 앱 내부의 OIDC 인가 요청을 트리거하는 로직이 동작하지 않는다는 점입니다. 결과적으로 서버는 브라우저가 유효한 세션을 가진 것으로 인식하지 못해서 404 오류를 발생시킵니다.

해결 방법

이 문제를 방지하는 주요 방법은 두 가지입니다:

항상 앱의 로그인 버튼을 이용하기

“/sign-in” 페이지에 직접 접근하는 대신, 앱에서 제공하는 정상적인 로그인 흐름을 따르세요. 앱 내의 “로그인” 버튼을 클릭하면 올바른 OIDC 인가 요청이 시작되어 필요한 세션이 설정됩니다.

사용자를 자동으로 리다이렉트하기

Logto 인스턴스에 앱이 하나만 있다면, 유효한 세션 없이 “/sign-in” 페이지에 접근하는 시도를 자동으로 감지해 로그인 버튼이 있는 메인 페이지로 사용자를 리다이렉트하는 로직을 구현할 수 있습니다.

이를 위해 Logto 에서는 “알 수 없는 세션 리다이렉트 URL” 설정을 도입했습니다. 이 URL 을 설정하면 Logto 는 404 오류 페이지 대신 설정된 페이지로 사용자를 자동으로 보내줍니다. 예를 들어, 앱의 홈페이지나 커스텀 로그인 화면 등으로 리다이렉트 할 수 있습니다. 리다이렉트 후에는 클라이언트 앱이 새로운 로그인 흐름을 시작해야 합니다.

설정하려면 Logto Console 의 Logto Cloud > Sign-in experience > Sign-up and sign-in > Advanced options에서 대체 URL을 입력하세요.

예시로 Logto Cloud 에서 이 값은 https://cloud.logto.io/로 설정되어 있습니다. 한 번 설정해두면, 유효한 세션 없이 /sign-in에 접근한 사용자는 해당 URL로 안내되어 인증을 다시 시작합니다.

경험 개선에 대한 추가적인 고민

우리는 최소한 “/unknown-session” 페이지에서 친절한 메시지를 제공해 404 오류의 원인과 다음에 해야 할 일을 안내함으로써 사용자 경험을 개선하고자 합니다. 예를 들어, Logto 를 사용하면 로그인 오류 페이지에 커스텀 지원 이메일이나 웹사이트 주소를 노출할 수 있습니다. 오류를 만난 사용자는 당신의 연락처 정보를 보고 도움을 요청할 수 있습니다.

추가적으로, 현재 Logto 인스턴스에 앱이 하나만 감지될 경우 "Sign-out redirect URI"(보통 앱의 메인 페이지)로 자동 리다이렉트하거나, 이런 경우에 커스텀 메시지를 노출할 수 있도록 추가 설정을 제공하는 등, 다른 안전 대책도 고려 중입니다.

결론

“/sign-in” 페이지의 404 not found (잘못된 세션) 오류는 대개 로그인 흐름을 우회해 페이지의 URL 을 직접 접근해서 인가 요청이 발생하지 않고, 이로 인해 유효한 세션(쿠키로 관리됨)이 생성되지 않기 때문에 발생합니다.

이 흐름과 그 중요성을 이해하고 나면, 이 오류를 피하고 Logto 연동 앱에서 원활하게 로그인할 수 있습니다.

아이디어를 공유하고 싶으시면 언제든지 연락 주세요.