Auth0

Auth0 と Next.js の認証設定ガイド – ドメイン・クライアントID取得とデプロイ手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Auth0 アカウント作成とアプリケーション登録

Auth0 テナントを作成し、Next.js 用シングルページアプリケーション(SPA)を登録するだけで、認証に必要な Domain / Client ID / Client Secret が取得できます。これらはローカル開発時の .env.local だけでなく、Vercel の環境変数にも必須です。

必要になる情報と取得手順

Auth0 コンソール左メニューから Applications → Create Application を選び、以下を設定してください。

項目 説明
Domain your-tenant.auth0.com の形で表示されるテナントドメイン
Client ID フロントエンドから公開しても安全な識別子
Client Secret サーバー側でのみ使用する機密情報(.env.local に保存)

ポイント:App Router ではサーバーコンポーネントが認証情報を直接扱うことはできません。必ず環境変数から取得し、SDK が内部で処理します。

コールバック URL とログアウト URL の設定

設定項目 推奨値
Allowed Callback URLs http://localhost:3000/api/auth/callback(ローカル)
https://your-app.vercel.app/api/auth/callback(本番)
Allowed Logout URLs http://localhost:3000/
https://your-app.vercel.app/

設定ミスがあると Invalid callback URL エラーになるため、必ず正確に記述してください。


Next.js プロジェクトへの Auth0 SDK インストールと基本設定

公式パッケージ @auth0/nextjs-auth0 は v3 系で TypeScript と App Router にフル対応しています。SSR・CSR どちらでもシームレスにユーザー情報を取得できるよう設計されています。

SDK のインストール(v3 系)

:過去のドキュメントで v2.x と記載されていることがありますが、2026 年現在は v3 系 が主流です。古い情報と混同しないようご注意ください。

環境変数の定義

プロジェクトルートに .env.local を作成し、以下を設定します(取得した値で置き換えてください)。

Vercel デプロイ時は、Settings > Environment Variables で同名の変数を ProductionPreviewDevelopment にすべて追加してください。


認証ガードと API ルーティングの実装

Auth0 が提供するハンドラ /api/auth/[...auth0] を作成すれば、ログイン・コールバック・ログアウトのエンドポイントが自動生成されます。加えて、SSR ページや Middleware で認証ガードを設定できます。

API ハンドラの実装例(App Router 用)

handleAuth() が内部で login, callback, logout などのルートを生成します。個別にカスタマイズしたい場合は以下をインポートしてください。

SSR ページでの認証チェック(withPageAuthRequired)

withPageAuthRequiredgetServerSideProps の代替として、サーバー側で自動的にセッションを取得し未認証時はリダイレクトします。

Middleware による保護(Edge Runtime)

Middleware は Edge Runtime で実行されるため、リクエスト受信直後に認証チェックが走り、未認証ユーザーは即座にログインページへリダイレクトします。


Next.js 13+ App Router と Server Component での Auth0 活用

App Router では Server ComponentClient Component が明確に分かれます。useUser フックは クライアントコンポーネントのみ で使用でき、サーバーコンポーネントでは getSession を直接呼び出す必要があります。

サーバーコンポーネントからユーザー情報を取得するヘルパー

重要@auth0/nextjs-auth0/servergetSessionサーバー側だけ 呼び出すことが前提です。クライアントコンポーネントで同関数を使用するとビルドエラーになります。

Server Component で認可ロジックと子コンポーネントへのデータ受け渡し

クライアントコンポーネントで useUser を使用する例

  • Server Component が認可ロジックと初期データ取得を担い、
  • Client ComponentuseUser で最新の認証状態(トークンリフレッシュ等)を監視しつつ UI を構築します。

この分離により、SSR 時点で正しいユーザー情報が確定し、クライアント側でもリアルタイムな状態変化に追従できます。


ローカル開発・テストと Vercel への自動デプロイ

認証は外部サービスとの連携が必須のため、ローカルだけでなく CI/CD パイプラインでも検証しておくことが重要です。以下では Playwright(E2E) と Jest(ユニット) を用いたテスト例と、Vercel デプロイ時の注意点を紹介します。

Playwright でのエンドツーエンドテスト

Jest でのセッション取得ユニットテスト

CI に組み込む例(GitHub Actions)

Vercel 環境変数とプレビュー環境での確認手順

  1. Settings > Environment Variables.env.local と同名のキーを Production, Preview, Development すべてに設定。
  2. プレビュー URL が生成されたら、ブラウザで /api/auth/login にアクセスし Auth0 のログイン画面が表示されるか確認。
  3. Allowed Callback URLs にプレビュー用の https://<preview-id>.vercel.app/api/auth/callback を追加しておくと、プレビュー環境でも正常にコールバックできます。

典型的なエラーと対策

エラー 原因 解決策
Invalid callback URL プレビュー・本番の URL が Auth0 に未登録 Allowed Callback URLs に全デプロイ先を列挙
Session cookie too large JWT が大きくなり Cookie 上限超過 session.cookie.maxAge を短めに設定し、Refresh Token のみ保持
SSR と CSR でユーザー状態が不一致 サーバー側でセッション取得失敗 withPageAuthRequired や Middleware で必ず SSR 時点でもチェック
CORS エラー(プレビュー) Vercel プレビューのドメインが Auth0 の CORS リストに未登録 Allowed Web Originshttps://*.vercel.app を追加

まとめ

  • Auth0 テナントとアプリケーションを作成し、Domain・Client ID・Client Secret を取得したら .env.local と Vercel の環境変数に設定する。
  • @auth0/nextjs-auth0 v3 系 をインストールし、app/api/auth/[...auth0]/route.ts にハンドラを作成すれば認証エンドポイントが自動生成される。
  • サーバーコンポーネントでは useUser を使用せず、@auth0/nextjs-auth0/servergetSession でユーザー情報を取得するヘルパー (getUser) を作成する。
  • 認証ガードwithPageAuthRequired(SSR)と Middleware(Edge Runtime)の組み合わせで実装し、未認証アクセスを確実に防止できる。
  • Playwright と Jest によるテストを CI に組み込み、プレビュー環境でも Auth0 のコールバック URL を正しく設定すればデプロイ時のトラブルを回避できる。

これらの手順とベストプラクティスに従えば、最新の Next.js App Router と Auth0 SDK v3 系で 安全・高速・スケーラブル な認証基盤が構築できます。ぜひ実務に取り入れて、開発フローを一段階上げてみてください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Auth0