Porque podes ver um 404 ao iniciar sessão na tua aplicação integrada com Logto
Já alguma vez encontraste um erro "404 Não Encontrado" quando tentaste iniciar sessão numa aplicação integrada com Logto? Este artigo de blogue explica porque isto acontece e o que podes fazer para evitar.
Contexto
Já tentaste iniciar sessão numa aplicação que usa o Logto para autenticação e encontraste um erro "404 não encontrado"? Algum dos teus utilizadores finais relatou o mesmo problema?

Isto pode acontecer quando acedes diretamente à página de início de sessão (por exemplo, https://a-tua-app.com/sign-in
) sem passar pelo fluxo de início de sessão previsto pela tua aplicação.
Aqui está o porquê:
A importância do fluxo OIDC
O Logto baseia-se no protocolo OpenID Connect (OIDC) para uma autenticação segura. Quando inicias sessão através do fluxo normal da aplicação (por exemplo, normalmente ao clicar no botão de iniciar sessão da tua aplicação), a aplicação inicia uma comunicação com o servidor OIDC do Logto. Esta comunicação, chamada de “pedido de autorização”, é importante porque faz várias validações contra quem chama em primeiro lugar, e depois estabelece uma sessão segura entre o teu navegador e o servidor (gerida por cookies).
O problema surge quando os utilizadores navegam diretamente para a página “/sign-in”, pois isso ignora a lógica interna da aplicação que dispara o pedido de autorização OIDC. Consequentemente, o servidor não reconhece o teu navegador como tendo uma sessão válida, o que leva ao erro 404.
A solução
Existem duas principais formas de evitar este problema:
Usa sempre o botão de iniciar sessão da app
Em vez de acederes diretamente à página "/sign-in", segue o fluxo de início de sessão previsto pela aplicação. Quando clicas no botão "Iniciar sessão" dentro da app, inicia-se o pedido de autorização OIDC correto, estabelecendo assim a sessão necessária.
Redireciona os utilizadores automaticamente
Se tens apenas uma aplicação na tua instância Logto, podes tentar implementar uma lógica para intercetar automaticamente as tentativas dos utilizadores de aceder à página "/sign-in" sem uma sessão válida, redirecionando-os de volta para a tua página principal onde é exibido o botão de início de sessão.
Para lidar com isto, o Logto introduziu a configuração “URL de redirecionamento de sessão desconhecida”. Quando definires este URL, o Logto redireciona automaticamente os utilizadores para a página especificada em vez de mostrar o erro 404. Por exemplo, podes redirecioná-los para a página inicial da tua app ou para um ecrã de login personalizado. Após o redirecionamento, a tua aplicação cliente deve iniciar um novo fluxo de início de sessão.
Para configurar isto, vai à Logto Console em Logto Cloud > Experiência de início de sessão > Registo e início de sessão > Opções avançadas e insere o teu URL de fallback.
Por exemplo, a Logto Cloud define isto como https://cloud.logto.io/
. Depois de configurado, os utilizadores que acedam a /sign-in
sem uma sessão válida serão enviados para esse URL para reiniciar a autenticação.
Reflexões adicionais sobre a melhoria da experiência
Estamos a tentar melhorar a experiência do utilizador, pelo menos adicionando mensagens úteis na página "/unknown-session", explicando a razão do 404 e informando os utilizadores sobre o que fazer em vez de ficarem confusos e perdidos. Por exemplo, o Logto suporta um e-mail de apoio ao cliente personalizado e endereço de website para as páginas de erro de início de sessão. Os utilizadores que encontrem um erro verão os teus dados de contacto e poderão entrar em contacto para obter assistência.
Também podemos considerar implementar outras medidas de segurança para mitigar o problema, como redirecionamento automático para o "Sign-out redirect URI" (geralmente a página principal da aplicação) quando apenas uma aplicação é detetada para a instância Logto atual, ou adicionar configuração extra para mostrar uma mensagem personalizada nestes casos.
Conclusão
O erro 404 não encontrado (sessão inválida) na página "/sign-in" geralmente é causado por acederes diretamente ao URL da página de início de sessão, o que ignora o fluxo normal de início de sessão da aplicação que dispara o pedido de autorização, não sendo assim estabelecida uma sessão válida (gerida por cookies).
Ao compreenderes este fluxo e a sua importância, podes evitar o erro e proporcionar uma experiência de início de sessão perfeita na tua aplicação integrada com Logto.
Por favor, entra em contacto connosco se quiseres partilhar as tuas ideias.