Português (Brasil)
  • 404-nao-encontrado
  • logto-sessao-desconhecida
  • fluxo-de-codigo-de-autorizacao

Por que você pode ver um erro 404 ao fazer login no seu aplicativo integrado ao Logto

Já se deparou com um erro "404 Não Encontrado" ao tentar fazer login em um aplicativo integrado ao Logto? Este post do blog explica por que isso acontece e o que você pode fazer para evitá-lo.

Charles
Charles
Developer

Contexto

Já tentou fazer login em um aplicativo que usa Logto para autenticação e encontrou um erro "404 não encontrado"? Algum de seus usuários finais relatou o mesmo problema?

Captura de tela do erro 404 sessão Logto não encontrada

Isso pode acontecer quando você acessa diretamente a página de login (por exemplo, https://your-app.com/sign-in) sem passar pelo fluxo de login pretendido do seu aplicativo.

Aqui está o porquê:

A importância do fluxo OIDC

O Logto depende do protocolo OpenID Connect (OIDC) para autenticação segura. Quando você faz login através do fluxo normal do aplicativo (por exemplo, geralmente clicando em um botão de login no seu aplicativo), o aplicativo inicia uma comunicação com o servidor OIDC do Logto. Essa comunicação, chamada de “solicitação de autorização”, é importante porque faz várias validações contra o chamador primeiro, e então estabelece uma sessão segura entre o seu navegador e o servidor (gerenciada por cookies).

O problema surge quando os usuários navegam diretamente para a página “/sign-in”, pois isso ignora a lógica interna do aplicativo que dispara a solicitação de autorização OIDC. Consequentemente, o servidor não reconhece seu navegador como tendo uma sessão válida, o que leva ao erro 404.

A solução

Há duas maneiras principais de evitar esse problema:

Sempre use o botão de login do aplicativo

Em vez de acessar diretamente a página "/sign-in", siga o fluxo de login pretendido fornecido pelo aplicativo. Ao clicar no botão "Login" dentro do aplicativo, ele inicia a solicitação de autorização OIDC adequada e estabelece a sessão necessária.

Redirecionar usuários automaticamente

Se você tiver apenas um aplicativo em sua instância do Logto, pode tentar implementar uma lógica para interceptar automaticamente tentativas de usuários de acessar a página "/sign-in" sem uma sessão válida e redirecioná-los de volta para sua página principal, onde um botão de login é exibido. Isso não pode ser feito pelo Logto devido à sua natureza de "Omni-sign-in", uma vez que múltiplos aplicativos podem compartilhar o mesmo sistema de autenticação e, portanto, quando tal solicitação de página chega, o Logto não sabe para qual aplicativo deve redirecionar.

Pensamentos adicionais sobre melhoria de experiência

Estamos tentando melhorar a experiência do usuário, pelo menos adicionando mensagens úteis na página "/unknown-session", explicando o motivo do 404 e seja comunicado aos usuários o que fazer, em vez de ficarem confusos e sem saber o que fazer.

Também podemos considerar implementar outras medidas de segurança para mitigar o problema, como redirecionamento automático para o "URI de redirecionamento de logout" (geralmente a página principal do aplicativo) quando houver apenas um aplicativo detectado para a instância atual do Logto, ou adicionando configuração adicional para mostrar mensagem personalizada nesse caso.

Conclusão

O erro 404 não encontrado (sessão inválida) na página "/sign-in" é geralmente causado pelo acesso direto à URL da página de login, o que ignora o fluxo de login normal do aplicativo que dispara a solicitação de autorização, e assim nenhuma sessão válida (gerenciada por cookies) é estabelecida.

Ao entender este fluxo e sua importância, você pode evitar o erro e desfrutar de uma experiência de login perfeita com seu aplicativo integrado ao Logto.

Por favor, sinta-se à vontade para nos contatar se quiser compartilhar suas ideias.