Perché potresti vedere un 404 quando accedi alla tua app integrata con Logto
Hai mai riscontrato un errore "404 Non Trovato" quando hai provato ad accedere a un'app integrata con Logto? Questo post sul blog spiega perché succede e cosa puoi fare per evitarlo.
Contesto
Hai mai provato ad accedere a un'app che utilizza Logto per l'autenticazione ed hai incontrato un errore "404 non trovato"? Qualcuno dei tuoi utenti finali ha segnalato lo stesso problema?
Questo può succedere quando accedi direttamente alla pagina di accesso (ad esempio, https://your-app.com/sign-in
) senza passare attraverso il flusso di accesso previsto dalla tua applicazione.
Ecco perché:
L'importanza del flusso OIDC
Logto si basa sul protocollo OpenID Connect (OIDC) per un'autenticazione sicura. Quando accedi tramite il flusso normale dell'applicazione (ad esempio, tipicamente cliccando un pulsante di accesso dalla tua applicazione), l'applicazione avvia una comunicazione con il server OIDC di Logto. Questa comunicazione, chiamata "richiesta di autorizzazione", è importante perché esegue varie convalide contro il chiamante prima di stabilire una sessione sicura tra il tuo browser e il server (gestita tramite cookie).
Il problema si presenta quando gli utenti navigano direttamente alla pagina “/sign-in”, poiché questo bypassa la logica interna dell'applicazione che attiva la richiesta di autorizzazione OIDC. Di conseguenza, il server non riconosce il tuo browser come avente una sessione valida, il che porta quindi all'errore 404.
La soluzione
Ci sono due modi principali per evitare questo problema:
Usa sempre il pulsante di accesso dell'app
Invece di accedere direttamente alla pagina "/sign-in", segui il flusso di login previsto dall'applicazione. Quando clicchi sul pulsante "Accedi" all'interno dell'app, questo avvia la giusta richiesta di autorizzazione OIDC, e viene stabilita la sessione necessaria.
Reindirizza automaticamente gli utenti
Se hai solo un'applicazione nella tua istanza Logto, potresti provare a implementare una logica per intercettare automaticamente i tentativi degli utenti di accedere alla pagina "/sign-in" senza una sessione valida e reindirizzarli alla tua pagina principale dove è presente un pulsante di accesso. Questo non può essere fatto da Logto a causa della sua natura di "Omni-sign-in", poiché più applicazioni possono condividere lo stesso sistema di autenticazione, e quindi quando arriva una richiesta di questo tipo, Logto non sa a quale app dovrebbe reindirizzare.
Ulteriori riflessioni sul miglioramento dell'esperienza
Stiamo cercando di migliorare l'esperienza utente, almeno aggiungendo messaggi utili sulla pagina "/unknown-session", spiegando il motivo del 404 e facendo sapere agli utenti cosa fare invece di essere confusi e senza idee.
Potremmo anche considerare di implementare altre misure sicure per mitigare il problema, come il reindirizzamento automatico all'"URI di reindirizzamento alla disconnessione" (di solito la pagina principale dell'applicazione) quando viene rilevata solo un'applicazione per l'istanza Logto corrente, o aggiungendo configurazioni aggiuntive per mostrare un messaggio personalizzato in questi casi.
Conclusione
L'errore 404 non trovato (sessione non valida) sulla pagina "/sign-in" è solitamente causato dall'accesso diretto all'URL della pagina di accesso, che bypassa il flusso di accesso normale dell'applicazione che attiva la richiesta di autorizzazione, e quindi non viene stabilita alcuna sessione valida (gestita dai cookie).
Comprendendo questo flusso e la sua importanza, puoi evitare l'errore e godere di un'esperienza di accesso senza interruzioni con la tua app integrata con Logto.
Sentiti libero di contattarci se desideri condividere le tue idee.