はじめに
「【OSSでWiki構築】第4回(Google OAuth編)Outline認証設定」を進める過程で実際に発生した問題と、その解決に至るまでのプロセスを記録したものです。
エラーは失敗ではなく、システムへの理解を深めるための最高のヒントです。エラーから得られた学びを共有します。
「エラー 400: redirect_uri_mismatch」
発生した事象
-
https://localhostにアクセスし、「Continue with Google」ボタンをクリックした後、Googleの画面で「アクセスをブロック:Outline Wikiのリクエストは無効です」というエラーが表示された。 - エラーコードは
エラー 400: redirect_uri_mismatchだった。
原因の分析
-
redirect_uri_mismatchは、「リダイレクトURIの不一致」を意味するOAuth認証における典型的なエラー。 - これは、①私たちがGoogle Cloudに事前登録した「コールバックURI」と、②Outlineアプリが実際にGoogleに通知した「コールバックURI」との間に、一字一句でも食い違いがある場合に発生する、セキュリティ上重要なエラーである。
解決策
- エラー画面に表示されている「エラーの詳細」リンクをクリックした。
- ポップアップに、Googleが実際に受け取ったリクエストの詳細が表示された。
リクエストの詳細: redirect_uri=https://localhost/auth/oidc.callback
- この情報から、私たちが登録した
.../google.callbackではなく、Outlineアプリは.../oidc.callbackというURIを送信していたことが判明した。 - Google Cloudの「認証情報」設定画面に戻り、「承認済みのリダイレクトURI」に、エラー詳細に記載されていた正しいURI (
https://localhost/auth/oidc.callback) を追加した。 - 設定を保存したところ、エラーは解消され、正常にログインできるようになった。
学び
-
redirect_uri_mismatchエラーは、OAuth認証における最初の関門であり、解決の鍵はエラーメッセージの詳細に必ず書かれている。 - 自分の設定が正しいと思い込まず、エラー画面が教えてくれる「実際にプログラムが送信した値」を確認し、それを「正」として登録情報側を修正することが、最も確実な解決策である。
- プログラムが使用するコールバックURLの仕様は、バージョンアップなどによって変更される可能性があることを念頭に置く。
J.B.Goode Inc.に所属しています。良ければフォローお願いします!
J.B.Goode Inc.のウェブサイトでは、技術記事の他にも技術ナレッジや日々の気づき等を配信しています。
https://www.jbgoode.jp/
カジュアル面談も実施中です。お気軽にお問い合わせください。
https://www.jbgoode.jp/recruit/