Skip to main content

AI を使って Auth0 を統合

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使っている場合は、agent skills を使って、数分で Auth0 の認証を自動的に追加できます。インストール:
次に、AI アシスタントにこう依頼します:
AI アシスタントが、Auth0 アプリケーションの作成、資格情報の取得、@auth0/auth0-fastify のインストール、プラグインの設定、必要なルートやビューの作成まで自動的に行います。agent skills の完全なドキュメント →
前提条件: 始める前に、以下がインストールされていることを確認してください。
  • Node.js 20 LTS 以降
  • npm 10 以上、または yarn 1.22 以上、または pnpm 8 以上
インストールを確認するには: node --version && npm --versionFastify のバージョン互換性: このクイックスタートは Fastify 5.x 以降に対応しています。

はじめる

このクイックスタートでは、FastifyアプリケーションにAuth0の認証を追加する方法を紹介します。Auth0 Fastify SDKを使って、ログイン、ログアウト、ユーザープロファイルの機能を備えた安全なWebアプリケーションを構築します。
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 から手動で設定する方法です。
Auth0 App を作成し、適切な設定値があらかじめ入力された .env ファイルをコピーします。
.env ファイルが存在することを確認します: cat .env (Mac/Linux) または type .env (Windows)
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 のログインページが完全に機能するようになっているはずです。次のように動作します。
  1. “Login” をクリック - Auth0 の Universal Login ページにリダイレクトされます
  2. 認証を完了 - アプリにリダイレクトされます
  3. “/profile” にアクセス - ユーザー情報が表示されます
  4. “Logout” をクリック - アプリと Auth0 の両方からログアウトします

高度な使い方

アクセストークンが必要な外部APIを呼び出すには、SDKで audience を設定します。
server.js
.env ファイルに次を追加します。
.env
次に、アクセストークンを取得して使用します。
server.js
デフォルトでは、Auth0 のルートは /auth/* にマウントされます。自動マウントを無効にして、カスタムルートを作成することもできます。
server.js
カスタムコールバックURLを含めるよう、Auth0 Dashboard の Allowed Callback URLs を忘れずに更新してください。
ユーザーが複数の認証プロバイダーを1つのアカウントにリンクできるようにします。
server.js
これにより、次のルートが自動的に作成されます。
  • /auth/connect - 新しいプロバイダーをリンク
  • /auth/connect/callback - リンク用コールバックを処理
  • /auth/unconnect - プロバイダーをリンク解除
  • /auth/unconnect/callback - リンク解除用コールバックを処理
プロファイルページにリンク用のボタンを追加します。
views/profile.ejs
型安全性を高めるため、プロジェクトを TypeScript に移行します。
tsconfig.json を作成します。
tsconfig.json
server.js の名前を server.ts に変更し、型を追加します。
server.ts
package.json を更新します。
package.json

トラブルシューティング

ログイン後の「Invalid state」エラー

問題: 認証リクエストと コールバック の間で state が一致していません。解決策:
  1. Cookie が正しく設定されていることを確認してください (ブラウザでブロックされていないこと)
  2. コールバック URL が Auth0 Dashboard で完全に一致していることを確認してください (/auth/callback を含む)
  3. SESSION_SECRET が設定されており、64 文字以上であることを確認してください

「session is undefined」エラー

問題: セッションデータを取得できません。解決策: セッションメソッドにアクセスする前に、Auth0 プラグインが登録されていることを確認してください。

コールバック URL の不一致

問題: Auth0 から「Callback URL mismatch」エラーが返されます。解決策:
  1. Auth0 Dashboard → アプリケーション → あなたのアプリ → 設定 に移動します
  2. Allowed Callback URLshttp://localhost:3000/auth/callback を追加します
  3. URL は完全に一致している必要があります (/auth/callback パスを含む)

環境変数が読み込まれない

問題: 設定値が undefined になっています。解決策:
  1. import 'dotenv/config' がエントリーファイルの先頭にあることを確認してください
  2. .env ファイルがルートディレクトリにあることを確認してください
  3. 変数名にタイプミスがないか確認してください

次のステップ

認証が正しく動作するようになったので、次もぜひ確認してみてください。

リソース