すべての記事
OAuthlocal developmentauthenticationcallbacks

OAuthコールバックをローカルでテストする方法

OAuthコールバックをローカルでテストするには、ローカルアプリを指す公開HTTPS URLが必要です。OAuthプロバイダーは認証後、登録済みのコールバックURLへユーザーをリダイレクトします。多くのプロバイダーはHTTPSを要求しますが、素のlocalhostは追加設定なしにはそれを提供できません。

なぜOAuthのリダイレクトURIはlocalhostを弾くのか

OAuth 2.0プロバイダーはredirect_uriパラメータを登録済みURLのホワイトリストと照合します。開発中、コールバックは次のような形になります。

https://your-app.portpreview.dev/auth/callback

トンネルがなければ、http://localhost:3000/auth/callbackを登録する(一部のプロバイダーは許可するが全部ではない)か、認証を変えるたびにステージングへデプロイするかになります。localhostトンネルは、あなたのマシン上に本物のHTTPSエンドポイントを与えます。

ローカルでOAuthをテストするために必要なもの

  • プロバイダーから取得したOAuthアプリの認証情報(クライアントIDとシークレット)。
  • ログイン開始とコールバック処理のための認証ルートを持つローカルアプリ。
  • プロバイダーのダッシュボードで許可リダイレクトURIとして登録したトンネルURL。
  • 開発中にトンネルURLを指す環境変数。

手順: PortPreviewでOAuthをローカルテスト

  1. OAuthルートを有効にしてアプリをローカル起動します。
  2. npx portpreview 3000を実行して公開HTTPS URLを取得します。
  3. コールバックURL(例: https://your-app.portpreview.dev/auth/callback)をOAuthプロバイダーの許可リダイレクトURIに追加します。
  4. ローカル環境を更新し、トンネルURLをベースURLとして使うようにします。
  5. ブラウザでOAuthフローを開始し、リダイレクトの一連の流れを完了させます。
  6. トークン交換、セッション作成、エラー処理を確認します。

プロバイダー別のヒント

Google OAuth

Googleは開発用にhttp://localhostを許可しますが、HTTPSトンネルでのテストはセキュアCookieフラグやmixed-contentポリシーを含む本番に近い挙動を検証します。

GitHub OAuth

GitHubはリダイレクトURIの完全一致を要求します。トンネルURLをOAuthアプリ設定に登録し、トンネルセッションが変わったら更新するか、プロバイダーが対応していれば安定したサブドメインを使いましょう。

Auth0とエンタープライズIdP

エンタープライズのID プロバイダーはHTTPSコールバックを必須とすることが多く、localhostを完全に制限する場合もあります。トンネルはローカルのSAML/OIDC統合テストの標準的な回避策です。

OAuthローカルテストでよくあるミス

  • リダイレクトURIの不一致: コールバックURLは末尾スラッシュやパスの大文字小文字まで完全に一致する必要があります。
  • 古いトンネルURL: セッション間でトンネルURLが変わる場合は、プロバイダーのホワイトリストを更新します。
  • stateパラメータ未検証: CSRF攻撃を防ぐため、開発中でも必ずstateパラメータを検証します。
  • Cookieドメインの問題: ドメイン設定がトンネルのホスト名と衝突すると、セッションCookieが保持されないことがあります。

セキュリティ上の考慮点

OAuthコールバックは、サーバー側で交換すべき認可コードを運びます。クライアントシークレットをフロントエンドコードに露出させず、トンネルURLは本番ドメインではなく一時的な開発用エンドポイントとして扱いましょう。ベストプラクティスはlocalhostトンネルのセキュリティガイドを参照してください。

OAuthフローをチームと共有する

プロダクトやQAがソーシャルログインをテストする必要があるときは、ステージングへデプロイする代わりにトンネルURLを共有しましょう。コラボレーションのワークフローはローカル開発サーバーの共有方法を参照してください。

1つのトンネルからOAuthとWebhookのテストを効率化するには、PortPreviewのウェイトリストに登録してください。

よくある質問

OAuthはlocalhostでテストできますか?
はい。多くのOAuthプロバイダーはhttp://localhostのリダイレクトURIを許可しますが、本番に近いテストにはHTTPSを要求するものも多いです。localhostトンネルは、ローカルアプリにマッピングされた公開HTTPS URLを提供します。
なぜOAuthプロバイダーはHTTPSのリダイレクトURIを要求するのですか?
HTTPSはリダイレクト中の認可コードやトークンを転送中に保護します。多くのプロバイダーは、安全でないネットワークでの機密情報の傍受を防ぐためHTTPSを強制します。
トンネルURLをOAuthのリダイレクトURIとして登録するには?
HTTPSのトンネルURLをコピーし、コールバックパスを付け足し、その完全なURLをプロバイダーの開発者ダッシュボードの許可リダイレクトURI一覧に追加します。