AI を使って Auth0 を統合する
AI を使って Auth0 を統合する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、agent skills を利用して数分で Auth0 認証を自動的に追加できます。インストール:次に、AI アシスタントに次のように依頼します:AI アシスタントが自動的に Auth0 アプリケーションを作成し、資格情報を取得し、
@auth0/nextjs-auth0 をインストールし、API ルートを作成して、環境変数を設定します。agent skills の完全なドキュメント →はじめに
1
新しいプロジェクトを作成
このQuickstart向けに新しいNext.jsプロジェクトを作成しますプロジェクトを開く
2
Auth0 Next.js SDK のインストール
shellscript npm install @auth0/nextjs-auth0 3
プロジェクトファイルを作成
Auth0 連携に必要なディレクトリとファイルをすべて作成します。
4
Auth0 App をセットアップする
次に、Auth0 テナントで新しいアプリを作成し、プロジェクトに環境変数を追加します。Auth0アプリをセットアップする方法は3つあります。Quick Setupツールを使用する (推奨) 、CLIコマンドを実行する、またはAuth0 Dashboardから手動で設定する方法です。
- クイックセットアップ(推奨)
- CLI
- Auth0 Dashboard
Auth0 App を作成し、適切な設定値があらかじめ入力された
.env ファイルをコピーします。5
Auth0の設定を作成する
Auth0のクライアントコードを
src/lib/auth0.tsに追加します:src/lib/auth0.ts
6
プロキシを追加
src/proxy.ts にプロキシコードを追加します:src/proxy.ts
src/ ディレクトリを使用しているため、proxy.ts ファイルは src/ 内に作成されます。src/ ディレクトリを使用していない場合は、代わりにプロジェクトのルートに作成してください。このプロキシは、次の認証ルートを自動的にマウントします。
/auth/login- ログインルート/auth/logout- ログアウトルート/auth/callback- コールバックルート/auth/profile- ユーザープロファイルルート/auth/access-token- アクセストークンルート/auth/backchannel-logout- バックチャネルログアウトルート
7
Login、Logout、Profile コンポーネントを作成
Step 3で作成したファイルに、コンポーネントのコードを追加します:
8
メインページを更新する
src/app/page.tsx を以下の内容に置き換えてください:src/app/page.tsx
9
Auth0Provider でレイアウトを更新する
src/app/layout.tsx を更新し、Inter フォントを読み込んで、アプリを Auth0Provider でラップします:src/app/layout.tsx
v4 では、Auth0Provider は省略可能です。必要になるのは、サーバーでのレンダリング時に初期ユーザーを渡し、それを
useUser() フックで利用できるようにしたい場合だけです。10
Tailwind CSS を設定する
src/app/globals.css の内容を次の内容に置き換えます:src/app/globals.css
11
アプリを実行
アプリは http://localhost:3000 で利用できます。Auth0 SDK v4 では、認証ルートが
/auth/* に自動的にマウントされます (v3 のように /api/auth/* ではありません) 。ポート 3000 が使用中の場合は、npm run dev -- --port 3001 を実行し、Auth0アプリのコールバックURLを http://localhost:3001 に更新してください確認これで、localhost 上で Auth0 のログインページが正常に動作するようになっているはずです
トラブルシューティング
JWEDecryptionFailed エラー
JWEDecryptionFailed エラー
JWEDecryptionFailed: decryption operation failed エラーが表示される場合は、AUTH0_SECRET が無効であるか、別のシークレットで暗号化された古いセッションクッキーが原因です。解決方法:- 次のコマンドで新しいシークレットを生成します。
.env.localファイルを更新します。
-
localhost:3000のブラウザクッキーを削除します。- Chrome/Edge:
F12キーを押す → Application タブ → Cookies → localhost のクッキーをすべて削除 - Firefox:
F12キーを押す → Storage タブ → Cookies → localhost のクッキーをすべて削除 - Safari: Develop メニュー → Show Web Inspector → Storage タブ → Cookies → すべて削除
- Chrome/Edge:
- 開発サーバーを再起動します。
/auth/login での 404 エラー
/auth/login での 404 エラー
ログインをクリックすると 404 ページが表示される場合は、次のよくある原因を確認してください。
- プロキシの場所:
src/proxy.tsが正しい場所にあることを確認します - プロキシのコード: プロキシがステップ 6 のコードと一致していることを確認します
- サーバーの再起動: プロキシファイルを作成したら、開発サーバーを再起動します
- インポートの確認:
import { auth0 } from "./lib/auth0"のパスが正しいことを確認します
Module Not Found エラー
Module Not Found エラー
“Cannot find module ’@/components/LoginButton’” のようなエラーが表示される場合:
- ファイルの存在を確認: ステップ 3 のファイルがすべて作成されていることを確認します
- パスの確認: コンポーネントが
src/components/ディレクトリ内にあることを確認します - TypeScript を再起動:
Cmd+Shift+P(Mac) またはCtrl+Shift+P(Windows) を押し、“TypeScript: Restart TS Server” を実行します - インポートの確認:
@/components/*を使用していることを確認します (~/components/*ではありません)
高度な使い方
v4 の重要な変更点
v4 の重要な変更点
この Quickstart では Auth0 Next.js SDK v4 を使用しており、v3 から大きく変更されています。
- 動的ルートハンドラーは不要 - 認証ルートはプロキシによって自動的にマウントされます
- クライアント設定を簡略化 -
new Auth0Client()は環境変数を自動的に読み込みます - 新しいルートパス - ルートは
/api/auth/*ではなく/auth/*にあります - プロキシが必須 - すべての認証機能は
proxy.tsを経由します <a>タグを使用 - ナビゲーションには、onClick 付きのボタンではなく<a href="/auth/login">を使用する必要があります
認証ルート
SDK は、プロキシ経由で以下のルートを自動的にマウントします。これらのルートで 404 エラーが発生する場合は、次の点を確認してください。
proxy.tsファイルが正しい場所にあること (プロジェクトルート、またはsrc/ディレクトリを使用している場合はsrc/内)- Step 6 に示されている matcher パターンでプロキシが正しく設定されていること
- プロキシファイルの作成後に開発サーバーを再起動していること
クライアントサイド認証
クライアントサイド認証
クライアントサイドの認証 state には、
useUser フックを使用します。components/UserProfile.tsx
API ルートの保護
API ルートの保護
API ルートを保護するには、
withApiAuthRequired メソッドを使用します。app/api/protected/route.ts
サードパーティのバックエンドで Auth0 トークンを使用する
サードパーティのバックエンドで Auth0 トークンを使用する
Auth0 の認証トークンを必要とするサードパーティのバックエンドサービス (Convex、Supabase、Firebase など) を使用している場合は、Next.js アプリからバックエンドクライアントにアクセストークンを渡す必要があります。クライアントサイド:
アクセストークンを取得する
サーバーサイド (App Router) :app/api/token/route.ts
lib/convex-client.ts
バックエンドを設定する
多くのサードパーティサービスでは、トークンを検証するために Auth0 ドメイン と audience が必要です。バックエンドの設定では、次のようにします。convex/auth.config.ts
バックエンドで必要な場合は、Auth0 アプリケーションに API audience が設定されていることを確認してください。これは Auth0 Dashboard の アプリケーション → APIs で設定するか、
.env.local に AUTH0_AUDIENCE を追加し、それに合わせて SDK を設定できます。トークンに関する問題のトラブルシューティング
バックエンドでctx.auth.getUserIdentity() が null を返す場合:- トークンが渡されていることを確認する: ブラウザーの DevTools の Network タブで、リクエストにトークンが含まれていることを確認します
- トークンの形式を確認する:
idTokenではなくaccessTokenを渡していることを確認します - バックエンドの設定を確認する: バックエンドに正しい Auth0 ドメイン と クライアント ID が設定されていることを確認します
- audience を確認する: Auth0 API を使用している場合は、
AUTH0_AUDIENCEが設定されており、API identifier と一致していることを確認します - トークンのクレームを確認する: jwt.io で JWT をデコードし、想定どおりのクレームが含まれていることを確認します