Почему вы можете увидеть 404 при входе в ваше приложение с интеграцией Logto
Вам когда-нибудь появлялась ошибка "404 Not Found", когда вы пытались войти в приложение с интеграцией Logto? Этот блог пост объясняет, почему это происходит и что вы можете сделать, чтобы этого избежать.
История
Вы когда-нибудь пытались войти в приложение, которое использует Logto для аутентификации, и получали ошибку "404 not found"? Сообщали ли ваши конечные пользователи о такой же проблеме?
Это может произойти, когда вы напрямую переходите на страницу входа в систему (например, https://your-app.com/sign-in
), не проходя через ожидаемый поток аутентификации вашего приложения.
Вот почему:
Важность потока OIDC
Logto полагается на протокол OpenID Connect (OIDC) для безопасной аутентификации. Когда вы входите через нормальный поток приложения (например, обычно нажимая кнопку входа из вашего приложения), приложение инициирует связь с OIDC-сервером Logto. Это взаимодействие, называемое "запросом авторизации", важно, потому что оно выполняет различные проверки вызывающего, а затем устанавливает безопасную сессию между вашим браузером и сервером (управляется с помощью cookies).
Проблема возникает, когда пользователи напрямую переходят на страницу "/sign-in", так как это обходит внутреннюю логику приложения, которая запускает запрос авторизации OIDC. В результате сервер не распознает ваш браузер как имеющий действительную сессию, что приводит к ошибке 404.
Решение
Есть два основных способа избежать этой проблемы:
Всегда используйте кнопку входа приложения
Вместо того, чтобы напрямую переходить на страницу "/sign-in", следуйте ожидаемому потоку входа, предоставленному приложением. Когда вы нажимаете кнопку "Sign in" в приложении, это инициирует правильный запрос авторизации OIDC и устанавливает необходимую сессию.
Автоматически перенаправлять пользователей
Если у вас только одно приложение в вашем экземпляре Logto, вы можете попробовать реализовать логику для автоматической перехвата попыток пользователей на страницу "/sign-in" без действительной сессии и перенаправления их на вашу основную страницу, где отображается кнопка входа. Это не может быть сделано Logto из-за его природы "Omni-sign-in", так как несколько приложений могут использовать одну и ту же систему аутентификации, и поэтому, когда приходит такой запрос страницы, Logto не знает, на какое приложение он должен перенаправить.
Дополнительные мысли по улучшению опыта
Мы стараемся улучшить пользовательский опыт, по крайней мере, добавив полезные сообщения на странице "/unknown-session", объясняющие причину 404 и информирующие пользователей, что делать вместо того, чтобы оставаться в замешательстве и без идей.
Мы также можем рассмотреть возможность внедрения других мер безопасности для смягчения проблемы, таких как автоматическое перенаправление на "URI перенаправления выхода" (обычно главная страница приложения), когда обнаружено только одно приложение для текущего экземпляра Logto, или добавление дополнительных настроек для показа пользовательских сообщений в таком случае.
Заключение
Ошибка 404 not found (недействительная сессия) на странице "/sign-in" обычно вызвана прямым доступом к URL страницы входа, что обходит нормальный поток входа приложения, который запускает запрос авторизации, и, следовательно, не устанавливается действительная сессия (управляемая cookies).
Понимая этот поток и его важность, вы можете избежать ошибки и наслаждаться бесшовным опытом входа в ваше приложение с интеграцией Logto.
Пожалуйста, не стесняйтесь обращаться к нам, если хотите поделиться своими идеями.