AI を使って Auth0 を統合
AI を使って Auth0 を統合
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使っている場合は、agent skills を使って、数分で Auth0 の認証を自動的に追加できます。インストール:次に、AI アシスタントにこう依頼します:AI アシスタントが、Auth0 アプリケーションの作成、資格情報の取得、
@auth0/auth0-fastify のインストール、プラグインの設定、必要なルートやビューの作成まで自動的に行います。agent skills の完全なドキュメント →はじめる
1
新しいプロジェクトを作成する
Fastifyアプリケーション用の新しいディレクトリを作成し、Node.jsプロジェクトを初期化します。プロジェクトを初期化するプロジェクト構成を作成する
2
Auth0 Fastify SDKをインストールする
必要な依存関係をインストールする
サーバーサイドレンダリングには、
ejs と @fastify/view を使用しています。Fastify がサポートしている任意のテンプレートエンジンを使用できます。package.json を更新して、start スクリプトを追加します:package.json
3
Auth0 Appを設定する
次に、Auth0 テナントで新しいアプリケーションを作成し、環境変数をプロジェクトに追加します。Auth0 アプリの設定方法は 3 つあります。Quick Setup ツール (推奨) を使う方法、CLI コマンドを実行する方法、または Auth0 Dashboard から手動で設定する方法です。
- Quick Setup(推奨)
- CLI
- Auth0 Dashboard
Auth0 App を作成し、適切な設定値があらかじめ入力された
.env ファイルをコピーします。4
Auth0プラグインを設定する
Fastify サーバーを作成し、Auth0プラグインを登録します。この設定でできること:
server.js
- HTML テンプレートをレンダリングするためのビューエンジンを登録します
- 資格情報を使用して Auth0 プラグインを設定します
/auth/login、/auth/logout、/auth/callbackのルートを自動的に作成します- 暗号化された Cookie を使ったセッション管理を行います
5
ビューテンプレートを作成
views ディレクトリを作成し、テンプレートファイルを追加します:Mac/Linux
Windows
views/home.ejs
views/profile.ejs
6
ルートを作成
server.js ファイルにルートを追加します:server.js
- ホームルートでは認証状態を確認し、その結果をテンプレートに渡します
- プロファイルルートでは、ルートを保護するために
preHandlerを使用します getSession()は、認証済みであればユーザーのセッションを返し、未認証の場合は null を返しますgetUser()は、認証済みユーザーのプロファイル情報を返します
7
アプリを実行する
開発サーバーを起動します。ブラウザで http://localhost:3000 を開きます。
Node.js 20 以降では、
--watch フラグを使うと、ファイルの変更時にサーバーが自動的に再起動します。チェックポイントこれで、Auth0 のログインページが完全に機能するようになっているはずです。次のように動作します。
- “Login” をクリック - Auth0 の Universal Login ページにリダイレクトされます
- 認証を完了 - アプリにリダイレクトされます
- “/profile” にアクセス - ユーザー情報が表示されます
- “Logout” をクリック - アプリと Auth0 の両方からログアウトします
高度な使い方
アクセストークンを使用して保護されたAPIを呼び出す
アクセストークンを使用して保護されたAPIを呼び出す
アクセストークンが必要な外部APIを呼び出すには、SDKで 次に、アクセストークンを取得して使用します。
audience を設定します。server.js
.env ファイルに次を追加します。.env
server.js
アカウントリンク
アカウントリンク
ユーザーが複数の認証プロバイダーを1つのアカウントにリンクできるようにします。これにより、次のルートが自動的に作成されます。
server.js
/auth/connect- 新しいプロバイダーをリンク/auth/connect/callback- リンク用コールバックを処理/auth/unconnect- プロバイダーをリンク解除/auth/unconnect/callback- リンク解除用コールバックを処理
views/profile.ejs
TypeScript を使う
TypeScript を使う
型安全性を高めるため、プロジェクトを TypeScript に移行します。
tsconfig.json を作成します。tsconfig.json
server.js の名前を server.ts に変更し、型を追加します。server.ts
package.json を更新します。package.json
トラブルシューティング
よくある問題と解決策
よくある問題と解決策
ログイン後の「Invalid state」エラー
問題: 認証リクエストと コールバック の間で state が一致していません。解決策:- Cookie が正しく設定されていることを確認してください (ブラウザでブロックされていないこと)
- コールバック URL が Auth0 Dashboard で完全に一致していることを確認してください (
/auth/callbackを含む) SESSION_SECRETが設定されており、64 文字以上であることを確認してください
「session is undefined」エラー
問題: セッションデータを取得できません。解決策: セッションメソッドにアクセスする前に、Auth0 プラグインが登録されていることを確認してください。コールバック URL の不一致
問題: Auth0 から「Callback URL mismatch」エラーが返されます。解決策:- Auth0 Dashboard → アプリケーション → あなたのアプリ → 設定 に移動します
- Allowed Callback URLs に
http://localhost:3000/auth/callbackを追加します - URL は完全に一致している必要があります (
/auth/callbackパスを含む)
環境変数が読み込まれない
問題: 設定値がundefined になっています。解決策:import 'dotenv/config'がエントリーファイルの先頭にあることを確認してください.envファイルがルートディレクトリにあることを確認してください- 変数名にタイプミスがないか確認してください
次のステップ
- Fastify API 認証 - JWT の検証で API エンドポイントを保護する
- Universal Login をカスタマイズする - ログイン体験をブランドに合わせる
- ソーシャル接続を追加する - Google、GitHub などのソーシャルログインを有効にする
- MFA を実装する - 多要素認証を追加する
リソース
- auth0-fastify GitHub - ソースコードとサンプル
- Fastify Documentation - Fastify について詳しく知る
- Auth0 Community - Auth0 Community でサポートを受ける