Español
  • 404-no-encontrado
  • logto-sesion-desconocida
  • flujo-de-codigo-de-autorizacion

Por qué podrías ver un 404 al iniciar sesión en tu aplicación integrada con Logto

¿Alguna vez te has encontrado con un error de "404 No Encontrado" cuando intentaste iniciar sesión en una aplicación integrada con Logto? Esta publicación de blog explica por qué sucede esto y qué puedes hacer para evitarlo.

Charles
Charles
Developer

Antecedentes

¿Alguna vez intentaste iniciar sesión en una aplicación que utiliza Logto para la autenticación y te encontraste con un error de "404 no encontrado"? ¿Alguno de tus usuarios finales ha reportado el mismo problema?

Captura de pantalla del error 404 de sesión de Logto no encontrada

Esto puede suceder cuando accedes directamente a la página de inicio de sesión (por ejemplo, https://your-app.com/sign-in) sin pasar por el flujo de inicio de sesión previsto desde tu aplicación.

Aquí está el por qué:

La importancia del flujo de OIDC

Logto se basa en el protocolo OpenID Connect (OIDC) para una autenticación segura. Cuando inicias sesión a través del flujo normal de la aplicación (por ejemplo, generalmente haciendo clic en un botón de inicio de sesión desde tu aplicación), la aplicación inicia una comunicación con el servidor OIDC de Logto. Esta comunicación, llamada "solicitud de autorización", es importante porque realiza varias validaciones contra el llamante primero, y luego establece una sesión segura entre tu navegador y el servidor (gestionada por cookies).

El problema surge cuando los usuarios navegan directamente a la página de "/sign-in", ya que esto evita la lógica interna de la aplicación que activa la solicitud de autorización de OIDC. En consecuencia, el servidor no reconoce tu navegador como teniendo una sesión válida, lo que luego lleva al error 404.

La solución

Hay dos formas principales de evitar este problema:

Siempre usa el botón de inicio de sesión de la aplicación

En lugar de acceder directamente a la página de "/sign-in", sigue el flujo de inicio de sesión previsto proporcionado por la aplicación. Cuando haces clic en el botón de "Iniciar sesión" dentro de la aplicación, inicia la solicitud de autorización de OIDC adecuada y establece la sesión necesaria.

Redirigir automáticamente a los usuarios

Si solo tienes una aplicación en tu instancia de Logto, puedes intentar implementar una lógica para interceptar automáticamente los intentos de los usuarios a la página de "/sign-in" sin una sesión válida, y redirigirlos de nuevo a tu página principal donde se muestra un botón de inicio de sesión. Esto no puede hacerse por Logto debido a su naturaleza de "Omni-sign-in", ya que múltiples aplicaciones pueden compartir el mismo sistema de autenticación, y por lo tanto, cuando una solicitud de página llega, Logto no sabe a qué aplicación debería redirigir.

Pensamientos adicionales sobre la mejora de la experiencia

Estamos tratando de mejorar la experiencia del usuario, al menos añadiendo mensajes útiles en la página de "/unknown-session", explicando la razón del 404 y dejando que los usuarios sepan qué hacer en lugar de estar confundidos y sin pistas.

También podríamos considerar implementar otras medidas de seguridad para mitigar el problema, como redirigir automáticamente al "URI de redirección de cierre de sesión" (generalmente la página principal de la aplicación) cuando solo se detecta una aplicación para la instancia actual de Logto, o agregar una configuración adicional para mostrar un mensaje personalizado en tal caso.

Conclusión

El error 404 no encontrado (sesión inválida) en la página de "/sign-in" generalmente es causado por acceder directamente a la URL de la página de inicio de sesión, lo que pasa por alto el flujo de inicio de sesión normal de la aplicación que activa la solicitud de autorización, y por lo tanto no se establece una sesión válida (gestionada por cookies).

Al entender este flujo y su importancia, puedes evitar el error y disfrutar de una experiencia de inicio de sesión sin problemas con tu aplicación integrada con Logto.

Por favor, no dudes en contactarnos si te gustaría compartir tus ideas.