• 404-not-found
  • logto-unknown-session
  • authorization-code-flow

Dlaczego możesz zobaczyć błąd 404 podczas logowania do aplikacji zintegrowanej z Logto

Czy kiedykolwiek napotkałeś błąd "404 Nie znaleziono" podczas próby zalogowania się do aplikacji zintegrowanej z Logto? Ten wpis na blogu wyjaśnia, dlaczego tak się dzieje i co możesz zrobić, aby tego uniknąć.

Charles
Charles
Developer

Przestań tracić tygodnie na uwierzytelnianie użytkowników
Uruchamiaj bezpieczne aplikacje szybciej z Logto. Zintegruj uwierzytelnianie użytkowników w kilka minut i skup się na swoim głównym produkcie.
Rozpocznij
Product screenshot

Tło

Czy kiedykolwiek próbowałeś zalogować się do aplikacji, która używa Logto do uwierzytelniania, i napotkałeś błąd "404 nie znaleziono"? Czy którykolwiek z twoich końcowych użytkowników zgłosił ten sam problem?

Zrzut ekranu błędu 404 Logto session not found

Może się to zdarzyć, gdy bezpośrednio przejdziesz do strony logowania (np. https://twoja-aplikacja.com/sign-in) bez przechodzenia przez zamierzony proces logowania z poziomu twojej aplikacji.

Oto dlaczego:

Znaczenie przepływu OIDC

Logto opiera się na protokole OpenID Connect (OIDC) w celu zapewnienia bezpiecznego uwierzytelniania. Kiedy logujesz się za pomocą standardowego przepływu aplikacji (np. zazwyczaj klikając przycisk logowania z poziomu aplikacji), aplikacja inicjuje komunikację z serwerem OIDC Logto. Ta komunikacja, nazywana "żądaniem autoryzacji", jest ważna, ponieważ na początku przeprowadza różne walidacje wobec wywołującego, a następnie ustanawia bezpieczną sesję pomiędzy twoją przeglądarką a serwerem (zarządzaną przez ciasteczka).

Problem pojawia się, gdy użytkownicy bezpośrednio przechodzą do strony "/sign-in", ponieważ omijają wewnętrzną logikę aplikacji, która uruchamia żądanie autoryzacji OIDC. W rezultacie serwer nie rozpoznaje twojej przeglądarki jako posiadającej ważną sesję, co prowadzi do błędu 404.

Rozwiązanie

Istnieją dwa główne sposoby rozwiązania tego problemu:

Zawsze korzystaj z przycisku logowania w aplikacji

Zamiast bezpośrednio przechodzić do strony "/sign-in", postępuj zgodnie z przewidzianym w aplikacji procesem logowania. Gdy klikniesz przycisk "Zaloguj się" wewnątrz aplikacji, inicjowany jest poprawny proces żądania autoryzacji OIDC, dzięki czemu ustanawiana jest niezbędna sesja.

Automatycznie przekieruj użytkowników

Jeśli masz tylko jedną aplikację na swojej instancji Logto, możesz wdrożyć logikę, która automatycznie przechwyci próby wejścia użytkowników na stronę "/sign-in" bez ważnej sesji i przekieruje ich z powrotem na stronę główną, gdzie wyświetlany jest przycisk logowania.

Aby to obsłużyć, Logto wprowadziło ustawienie "Unknown session redirect URL" (adres przekierowania dla nieznanej sesji). Gdy ustawisz ten adres URL, Logto automatycznie przekieruje użytkowników na określoną stronę zamiast wyświetlać błąd 404. Na przykład możesz przekierować ich na stronę główną swojej aplikacji lub dedykowany ekran logowania. Po przekierowaniu twoja aplikacja kliencka powinna zainicjować nowy proces logowania.

Aby to skonfigurować, przejdź do Logto Console pod Logto Cloud > Doświadczenie logowania > Rejestracja i logowanie > Opcje zaawansowane i wprowadź swój zapasowy adres URL.

Na przykład Logto Cloud ustawia ten adres na https://cloud.logto.io/. Po ustawieniu użytkownicy, którzy trafią na /sign-in bez ważnej sesji, zostaną przeniesieni pod ten adres, aby ponownie rozpocząć uwierzytelnianie.

Dodatkowe przemyślenia o poprawie doświadczenia użytkownika

Staramy się ulepszyć doświadczenie użytkowników, przynajmniej poprzez dodanie pomocnych komunikatów na stronie "/unknown-session", wyjaśniających powód błędu 404 i informujących użytkowników, co powinni zrobić zamiast pozostawiać ich zdezorientowanych i bez wskazówek. Na przykład Logto obsługuje niestandardowy adres e-mail do wsparcia i adres strony internetowej na stronach błędów logowania. Użytkownicy napotykający błąd zobaczą wtedy twoje dane kontaktowe i mogą się z tobą skontaktować po pomoc.

Możemy również rozważyć wdrożenie innych zabezpieczeń łagodzących problem, takich jak automatyczne przekierowanie do "Sign-out redirect URI" (zwykle głównej strony aplikacji) w przypadku wykrycia tylko jednej aplikacji dla danej instancji Logto, lub dodanie dodatkowej konfiguracji, aby wyświetlać spersonalizowany komunikat w takiej sytuacji.

Podsumowanie

Błąd 404 not found (nieprawidłowa sesja) na stronie "/sign-in" jest zazwyczaj spowodowany bezpośrednim przejściem do adresu URL strony logowania, co omija standardowy proces logowania aplikacji wyzwalający żądanie autoryzacji i przez to nie zostaje ustanowiona ważna sesja (zarządzana przez ciasteczka).

Zrozumienie tego procesu i jego znaczenia pozwoli ci uniknąć tego błędu i cieszyć się płynnym logowaniem w aplikacji zintegrowanej z Logto.

Zapraszamy do kontaktu, jeśli chcesz podzielić się swoimi pomysłami.