한국어
  • 404-not-found
  • logto-unknown-session
  • authorization-code-flow

Logto 통합 앱에 로그인할 때 404 에러가 발생할 수 있는 이유

Logto 통합 앱에 로그인하려고 할 때 "404 Not Found" 에러가 발생한 적이 있나요? 이 블로그 게시물은 이 현상이 발생하는 이유와 이를 피하기 위해 할 수 있는 일을 설명합니다.

Charles
Charles
Developer

배경

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는 "Omni-sign-in" 성격 때문에 이를 수행할 수 없습니다. 여러 애플리케이션이 동일한 인증 시스템을 공유할 수 있으므로, 그러한 페이지 요청이 들어오면 Logto는 어느 앱으로 리디렉션해야 할지 모릅니다.

사용자 경험 개선에 대한 추가 생각들

우리는 적어도 "/unknown-session" 페이지에 유용한 메시지를 추가하여 사용자에게 404의 이유를 설명하고 혼란스럽고 어리둥절한 상태에서 벗어나 무엇을 해야 하는지 알게하여 사용자 경험을 개선하려고 노력하고 있습니다.

또한 현재 Logto 인스턴스에 대해 탐지된 애플리케이션이 하나뿐일 때 "로그아웃 리디렉션 URI"(일반적으로 애플리케이션의 메인 페이지)로 자동 리디렉션하거나, 그러한 경우 사용자 메시지 표시를 맞춤 설정하는 추가 구성을 추가하는 등 문제를 완화하기 위한 다른 안전한 조치를 구현하는 것을 고려할 수 있습니다.

결론

" /sign-in" 페이지에서 발생하는 404 Not Found(유효하지 않은 세션) 오류는 일반적으로 인가 요청을 트리거하는 정상적인 애플리케이션 로그인 흐름을 우회하여 로그인 페이지 URL에 직접 접근함으로써 발생합니다. 따라서 유효한 세션(쿠키로 관리됨)이 설정되지 않습니다.

이 흐름과 중요성을 이해함으로써 오류를 피하고 Logto 통합 앱에서 원활한 로그인 경험을 누릴 수 있습니다.

아이디어를 공유하고 싶다면 언제든지 저희에게 연락해 주세요.