Dlaczego możesz zobaczyć błąd 404 podczas logowania się do aplikacji zintegrowanej z Logto
Czy kiedykolwiek napotkałeś błąd "404 Not Found" podczas próby logowania się do aplikacji zintegrowanej z Logto? Ten wpis na blogu wyjaśnia, dlaczego to się dzieje i co możesz zrobić, aby tego uniknąć.
Tło
Czy kiedykolwiek próbowałeś zalogować się do aplikacji używającej Logto do uwierzytelniania i napotkałeś błąd "404 not found"? Czy którykolwiek z twoich użytkowników końcowych zgłaszał ten sam problem?
To może się zdarzyć, gdy bezpośrednio uzyskujesz dostęp do strony logowania (np. https://your-app.com/sign-in
) bez przechodzenia przez zamierzoną ścieżkę logowania z twojej aplikacji.
Oto dlaczego:
Znaczenie przepływu OIDC
Logto opiera się na protokole OpenID Connect (OIDC) dla bezpiecznego uwierzytelniania. Kiedy logujesz się poprzez normalny przepływ aplikacji (np. zazwyczaj klikając przycisk logowania z twojej aplikacji), aplikacja inicjuje komunikację z serwerem OIDC Logto. Ta komunikacja, zwana "żądaniem autoryzacji", jest ważna, ponieważ najpierw przeprowadza różne walidacje względem wywołującego, a następnie ustanawia bezpieczną sesję między twoją przeglądarką a serwerem (zarządzaną przez pliki cookie).
Problem pojawia się, gdy użytkownicy bezpośrednio przechodzą na stronę "/sign-in", co omija wewnętrzną logikę aplikacji, która wyzwala żądanie autoryzacji OIDC. W konsekwencji, serwer nie rozpoznaje twojej przeglądarki jako mającej ważną sesję, co prowadzi do błędu 404.
Rozwiązanie
Istnieją dwa główne sposoby na uniknięcie tego problemu:
Zawsze używaj przycisku logowania aplikacji
Zamiast bezpośrednio uzyskiwać dostęp do strony "/sign-in", postępuj zgodnie z zamierzonym przepływem logowania przez aplikację. Kiedy klikniesz przycisk "Zaloguj się" w aplikacji, inicjuje to prawidłowe żądanie autoryzacji OIDC i ustanowienie koniecznej sesji.
Automatyczne przekierowywanie użytkowników
Jeśli w twojej instancji Logto masz tylko jedną aplikację, możesz spróbować zaimplementować logikę automatycznego przechwytywania prób użytkowników do strony "/sign-in" bez ważnej sesji i przekierowywania ich z powrotem na stronę główną, gdzie wyświetlany jest przycisk logowania. To nie może być zrobione przez Logto ze względu na jego "Omni-sign-in" charakter, jako że wiele aplikacji może korzystać z tego samego systemu uwierzytelniania, i dlatego, gdy takie żądanie strony się pojawia, Logto nie wie, do której aplikacji powinno przekierować.
Dodatkowe przemyślenia na temat poprawy doświadczenia
Staramy się poprawić doświadczenie użytkownika, przynajmniej dodając pomocne komunikaty na stronie "/unknown-session", wyjaśniające przyczynę błędu 404 i informujące użytkowników, co zrobić zamiast być zdezorientowanymi i nieświadomymi.
Możemy również rozważyć wprowadzenie innych bezpiecznych działań, aby złagodzić problem, takich jak automatyczne przekierowanie do "Sign-out redirect URI" (zazwyczaj główna strona aplikacji), gdy zostanie wykryta tylko jedna aplikacja dla bieżącej instancji Logto, lub dodanie dodatkowej konfiguracji, aby pokazać spersonalizowaną wiadomość w takim przypadku.
Podsumowanie
Błąd 404 not found (nieważna sesja) na stronie "/sign-in" jest zwykle spowodowany bezpośrednim dostępem do URL strony logowania, co omija normalny przepływ logowania aplikacji, który wyzwala żądanie autoryzacji, i dlatego nie ustanawia się ważna sesja (zarządzana przez pliki cookie).
Zrozumienie tego przepływu i jego znaczenia pozwala uniknąć tego błędu i cieszyć się bezproblemowym doświadczeniem logowania w aplikacji zintegrowanej z Logto.
Skontaktuj się z nami, jeśli chcesz podzielić się swoimi pomysłami.