Varför du kan se en 404 när du loggar in på din app integrerad med Logto
Har du någonsin stött på ett "404 Not Found"-fel när du försökte logga in på en app integrerad med Logto? Det här blogginlägget förklarar varför detta händer och vad du kan göra för att undvika det.
Bakgrund
Har du någonsin försökt logga in på en app som använder Logto för autentisering och stött på ett "404 not found"-fel? Har några av dina slutanvändare rapporterat samma problem?
Detta kan hända när du direkt går till inloggningssidan (t.ex., https://your-app.com/sign-in
) utan att gå igenom det avsedda inloggningsflödet från din applikation.
Här är varför:
Vikten av OIDC-flödet
Logto förlitar sig på OpenID Connect (OIDC) protokoll för säker autentisering. När du loggar in genom det normala applikationsflödet (t.ex., vanligtvis genom att klicka på en inloggningsknapp från din applikation), initierar applikationen en kommunikation med Logtos OIDC-server. Denna kommunikation, kallad "auktoriseringsförfrågan", är viktig eftersom den först utför olika valideringar mot den anropande, och sedan etablerar en säker session mellan din webbläsare och servern (hanterad av cookies).
Problemet uppstår när användare direkt navigerar till "/sign-in"-sidan, eftersom detta kringgår applikationens interna logik som utlöser OIDC-auktoriseringsförfrågan. Följaktligen känner servern inte igen din webbläsare som har en giltig session, vilket leder till 404-felet.
Lösningen
Det finns två huvudsakliga sätt att undvika detta problem:
Använd alltid appens inloggningsknapp
Istället för att direkt gå till "/sign-in"-sidan, följ det avsedda inloggningsflödet som tillhandahålls av applikationen. När du klickar på "Sign in"-knappen inom appen, initierar det rätt OIDC-auktoriseringsförfrågan och etablerar den nödvändiga sessionen.
Omdirigera användare automatiskt
Om du bara har en applikation i din Logto-instans, kan du försöka implementera logik för att automatiskt avlyssna användarförsök till "/sign-in"-sidan utan en giltig session och omdirigera dem tillbaka till din huvudsida där en inloggningsknapp visas. Detta kan inte göras av Logto på grund av dess "Omni-sign-in"-natur, eftersom flera applikationer kan dela samma autentiseringssystem, och därför när en sådan sidbegäran kommer in, vet Logto inte vilken app det ska omdirigera till.
Ytterligare tankar om förbättring av användarupplevelsen
Vi försöker förbättra användarupplevelsen, genom att åtminstone lägga till hjälpsamma meddelanden på "/unknown-session"-sidan, förklara orsaken till 404 och låta användarna veta vad de ska göra istället för att vara förvirrade och rådvilla.
Vi kan även överväga att implementera andra säkra åtgärder för att mildra problemet, såsom att automatiskt omdirigera till "Sign-out redirect URI" (vanligtvis huvudsidan för applikationen) när det bara finns en applikation upptäckt för den nuvarande Logto-instansen, eller lägga till ytterligare konfiguration för att visa anpassat meddelande i sådant fall.
Slutsats
404 not found (ogiltig session) felet på "/sign-in"-sidan orsakas vanligtvis av att direkt gå till inloggningssidan URL, vilket kringgår det normala applikationsinloggningsflödet som utlöser auktoriseringsförfrågan, och därför upprättas ingen giltig session (hanterad av cookies).
Genom att förstå detta flöde och dess betydelse kan du undvika felet och njuta av en smidig inloggningsupplevelse med din Logto-integrerade app.
Vänligen tveka inte att kontakta oss om du vill dela dina idéer.