Logto 連携アプリでサインイン時に 404 が表示される理由
Logto 連携アプリにサインインしようとしたとき、「404 Not Found」エラーが発生したことはありませんか?この記事では、この現象がなぜ起こるのか、そしてそれを回避する方法について解説します。
背景
Logto を使った認証でアプリにサインインしようとしたときに、「404 not found」エラーが表示されたことはありませんか?エンドユーザーからも同じ問題の報告があったことはありませんか?

これは、アプリケーションから本来のサインインフローを経由せず、直接サインインページ(例: https://your-app.com/sign-in
)にアクセスしたときに発生することがあります。
その理由を説明します。
OIDC フローの重要性
Logto は安全な認証を実現するために OpenID Connect (OIDC) プロトコル を利用しています。通常のアプリケーションフロー(例: アプリ内のサインインボタンをクリックするなど)でサインインすると、アプリケーションが Logto の OIDC サーバーと通信を開始します。この通信は「認可リクエスト」と呼ばれ、呼び出し元に対するさまざまな検証を行ったうえで、ブラウザとサーバー間で安全なセッション(Cookie で管理)が確立されます。
ユーザーが「/sign-in」ページに直接アクセスすると、OIDC の認可リクエストをトリガーするアプリの内部ロジックがスキップされてしまいます。その結果、サーバー側は有効なセッションが存在しないと認識し、404 エラーが発生します。
解決方法
この問題を回避する主な方法は 2 つあります。
常にアプリのサインインボタンを利用する
「/sign-in」ページへの直接アクセスは避け、アプリケーションが用意した本来のログインフローに従いましょう。アプリ内の「サインイン」ボタンをクリックすると、正しい OIDC 認可リクエストが開始され、必要なセッションが確立されます。
ユーザーを自動的にリダイレクト
Logto インスタンスに 1 つだけアプリケーションがある場合、「/sign-in」ページへの無効なセッションでのアクセスを自動的に検知し、サインインボタンを表示しているメインページへリダイレクトするロジックの実装を検討できます。
これに対応するため、Logto では「未知のセッションリダイレクト URL」設定が導入されました。この URL を設定しておくと、Logto は 404 エラーの代わりにそのページへ自動的にリダイレクトします。たとえば、アプリのトップページやカスタムのログイン画面にリダイレクトすることができます。リダイレクト後は、クライアントアプリケーション側で新たなサインインフローを開始すべきです。
設定するには、Logto コンソールの Logto Cloud > サインイン体験 > サインアップとサインイン > 詳細オプション にアクセスし、フォールバック URL を入力してください。
たとえば、Logto Cloud では https://cloud.logto.io/
に設定されています。この設定により、有効なセッションがない状態で「/sign-in」へアクセスしたユーザーは、その URL へ送り返され、認証をやり直すことになります。
さらなる体験向上のために
ユーザー体験向上のため、少なくとも「/unknown-session」ページで役に立つメッセージを表示し、404 の理由と、ユーザーが次に何をすべきかを分かりやすく案内することに取り組んでいます。たとえば、Logto ではサインインエラーページにカスタムサポートメールやウェブサイトアドレスを表示することも可能です。エラーに遭遇したユーザーはここに表示された連絡先を通じてサポートに問い合わせることができます。
また、その他のセーフティ対策として、現行 Logto インスタンスでアプリケーションが 1 つだけ検出された場合は「サインアウトリダイレクト URI」(通常はアプリのトップページ)に自動リダイレクトする、あるいはこのケースでカスタマイズされたメッセージを表示できる追加設定などの実装も検討しています。
まとめ
「/sign-in」ページでの 404 not found( 無効なセッション)エラーは、サインインページの URL へ直接アクセスすることで発生します。これは本来のアプリケーションのサインインフローで認可リクエストがトリガーされず、したがって(Cookie で管理されている)有効なセッションが確立されないためです。
このフローとその重要性を理解すれば、エラーを回避して Logto 連携アプリでシームレスなサインイン体験を実現できます。
ご意見・ご提案があれば、お気軽にご連絡ください。